|
ru.linux- RU.LINUX --------------------------------------------------------------------- From : Kirill Frolov 2:5020/400 29 Dec 2005 18:38:39 To : John Lepikhin Subject : 38.000 попугаев -------------------------------------------------------------------------------- Sun Dec 25 2005 18:02, John Lepikhin wrote to All: JL> Hello everybody. JL> Hадо расположить порядка 100.000 директорий (названия "1", "2" .. JL> "100000"). JL> Хочется сделать так, чтоб cd в каждую директорию был максимально быстрым. JL> Была идея организовать это поддиректориями ("1-100", в ней 1,2,3..., JL> "101-201", в ней 101,102,...). В ext3 *первый* поиск в каталоге может иметь время сопоставимое с необходимым временем для чтения каталога в память. Далее записи будут захешированы. Подробностей я не знаю. Hо рискну предположить, что чтение происходит блоками по 4Кбайта. Что из этого следует? Если обращения к каталогам происходят редко, то поиск конкретного каталога, если они все размещены в одном родительском каталоге, может занимать значительное время. Если обращения следуют часто -- значительный объём памяти (хотя вот тут я не уверен... -- может память разменивается на время). В случае организации иерархической структуры каталогов открытие каждого следующего вложенного каталога требует поиска его inode, что тоже достаточно дорогостоящая операция, особенно если они (inodes) раскиданы по разным блокам диска. Рискну предположить, что оптимальным вариантом будет иерархическая структура, содержащая на каждом уровне иерархии порядка пары сотен (чтоб не превышать размера дискового блока на один каталог) записей. В таком случае, на каждом уровне иерархии должен считываться один дисковый блок каталога, и дисковый блок, содержащий inode следующего подкаталога. Можно обойтись не более чем трёхкратным уровнем вложенности: итого 6 блоков. Будем считать, что время чтения блока с диска много меньше времени поиска имени каталога в самом блоке. Hо 6 блоков *хаотично разбросанных по диску*. Это может занять больше времени, чем поиск в каталоге из 100000 записей в силу неповоротливости накопителя. Возможно, выгодней будет иметь меньше уровней иерархии и больший размер каталога. В современном накопителе записи всех 100000 каталогов могут оказаться на одной дорожке диска и будут считаны быстрей, чем 6 разбросанных по диску блоков. --- ifmail v.2.15dev5.3 * Origin: FidoNet Online - http://www.fido-online.com (2:5020/400) Вернуться к списку тем, сортированных по: возрастание даты уменьшение даты тема автор
Архивное /ru.linux/166795785a9b2.html, оценка из 5, голосов 10
|