Главная страница


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)
 
 

Вернуться к списку тем, сортированных по: возрастание даты  уменьшение даты  тема  автор 

 Тема:    Автор:    Дата:  
 38.000 попугаев   John Lepikhin   25 Dec 2005 20:02:20 
 Re: 38.000 попугаев   Oleg Drokin   26 Dec 2005 00:13:31 
 Re: 38.000 попугаев   Igor Nikolaev   28 Dec 2005 19:26:46 
 38.000 попугаев   John Lepikhin   29 Dec 2005 03:25:28 
 Re: 38.000 попугаев   Igor Nikolaev   04 Jan 2006 16:49:36 
 38.000 попугаев   John Lepikhin   05 Jan 2006 04:05:16 
 Re: 38.000 попугаев   Igor Nikolaev   07 Jan 2006 21:54:34 
 38.000 попугаев   Kirill Frolov   29 Dec 2005 18:38:39 
Архивное /ru.linux/166795785a9b2.html, оценка 3 из 5, голосов 10
Яндекс.Метрика
Valid HTML 4.01 Transitional