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


ru.unix.bsd

 
 - RU.UNIX.BSD ------------------------------------------------------------------
 From : Eugene Grosbein                      2:5006/1       13 Oct 2002  00:21:03
 To : Valentin Nechayev
 Subject : Re: INN
 -------------------------------------------------------------------------------- 
 
 
  EG>> Как я люблю такие задачи, с миллионом файлов одном каталоге.
  EG>> Под такую задачу систему и настроить не грех.
  VN> И как?
  VN> root@iv:/usr/src/sys/i386/conf##sysctl vfs.ufs
  VN> vfs.ufs.dirhash_minsize: 2560
  VN> vfs.ufs.dirhash_maxmem: 2097152
  VN> vfs.ufs.dirhash_mem: 66615
  VN> vfs.ufs.dirhash_docheck: 0
  VN> Hа машине 256M оперативки. OK,
  VN> root@iv:/usr/src/sys/i386/conf##sysctl vfs.ufs.dirhash_maxmem=8388608
  VN> vfs.ufs.dirhash_maxmem: 2097152 -> 8388608
 
 Вот этого достаточно.
 
 Сейчас у меня достаточно железа, чтобы провести полный тест с миллионом.
 
 Скрипт переписал для возможности следить, что происходит.
 Очень занимательно :-)
 
 #!/bin/sh
 
 create() {
 echo creating...
 stamp=`date +%s`
 jot $count 1 | while read j
 do
   jot $step 1 | while read i
   do
     echo -n >> $j.$i
   done
   n=$(($n+$step))
   spent=$((`date +%s`-$stamp))
   echo created $n: $spent sec, `echo $n/$spent | bc` files/sec, \
     `sysctl vfs.ufs.dirhash_mem`
 done
 }
 
 remove() {
 echo -n removing... 
 cd ..
 stamp=`date +%s`
 rm -rf d
 spent=$((`date +%s`-$stamp))
 echo "removed: $spent sec, `echo "$count*$step/$spent" | bc` files/sec"
 }
 
 mkdir d
 cd d
 
 n=0
 step=20000 # создаем пачками по 20000 за раз
 count=50  # 50 пачек, итого миллион
 
 sysctl vfs.ufs.dirhash_maxmem
 create
 remove
 # EOF
 
 Результат, скрипт пущен не от рута:
 
 vfs.ufs.dirhash_maxmem: 8388608
 creating...
 created 20000: 2 sec, 10000 files/sec, vfs.ufs.dirhash_mem: 192064
 created 40000: 4 sec, 10000 files/sec, vfs.ufs.dirhash_mem: 328549
 created 60000: 6 sec, 10000 files/sec, vfs.ufs.dirhash_mem: 450564
 created 80000: 9 sec, 8888 files/sec, vfs.ufs.dirhash_mem: 634613
 created 100000: 11 sec, 9090 files/sec, vfs.ufs.dirhash_mem: 634613
 created 120000: 14 sec, 8571 files/sec, vfs.ufs.dirhash_mem: 909660
 created 140000: 17 sec, 8235 files/sec, vfs.ufs.dirhash_mem: 909660
 created 160000: 21 sec, 7619 files/sec, vfs.ufs.dirhash_mem: 1323257
 created 180000: 23 sec, 7826 files/sec, vfs.ufs.dirhash_mem: 1323257
 created 200000: 25 sec, 8000 files/sec, vfs.ufs.dirhash_mem: 1323257
 created 220000: 28 sec, 7857 files/sec, vfs.ufs.dirhash_mem: 1323257
 created 240000: 33 sec, 7272 files/sec, vfs.ufs.dirhash_mem: 1942626
 created 260000: 36 sec, 7222 files/sec, vfs.ufs.dirhash_mem: 1942626
 created 280000: 38 sec, 7368 files/sec, vfs.ufs.dirhash_mem: 1942626
 created 300000: 40 sec, 7500 files/sec, vfs.ufs.dirhash_mem: 1942626
 created 320000: 43 sec, 7441 files/sec, vfs.ufs.dirhash_mem: 1942626
 created 340000: 52 sec, 6538 files/sec, vfs.ufs.dirhash_mem: 2873222
 created 360000: 54 sec, 6666 files/sec, vfs.ufs.dirhash_mem: 2873222
 created 380000: 57 sec, 6666 files/sec, vfs.ufs.dirhash_mem: 2873222
 created 400000: 59 sec, 6779 files/sec, vfs.ufs.dirhash_mem: 2873222
 created 420000: 61 sec, 6885 files/sec, vfs.ufs.dirhash_mem: 2873222
 created 440000: 63 sec, 6984 files/sec, vfs.ufs.dirhash_mem: 2873222
 created 460000: 66 sec, 6969 files/sec, vfs.ufs.dirhash_mem: 2873222
 created 480000: 84 sec, 5714 files/sec, vfs.ufs.dirhash_mem: 4268088
 created 500000: 86 sec, 5813 files/sec, vfs.ufs.dirhash_mem: 4268088
 created 520000: 88 sec, 5909 files/sec, vfs.ufs.dirhash_mem: 4268088
 created 540000: 91 sec, 5934 files/sec, vfs.ufs.dirhash_mem: 4268088
 created 560000: 93 sec, 6021 files/sec, vfs.ufs.dirhash_mem: 4268088
 created 580000: 95 sec, 6105 files/sec, vfs.ufs.dirhash_mem: 4268088
 created 600000: 97 sec, 6185 files/sec, vfs.ufs.dirhash_mem: 4268088
 created 620000: 99 sec, 6262 files/sec, vfs.ufs.dirhash_mem: 4268088
 created 640000: 102 sec, 6274 files/sec, vfs.ufs.dirhash_mem: 4268088
 created 660000: 104 sec, 6346 files/sec, vfs.ufs.dirhash_mem: 4268088
 created 680000: 107 sec, 6355 files/sec, vfs.ufs.dirhash_mem: 4268088
 created 700000: 109 sec, 6422 files/sec, vfs.ufs.dirhash_mem: 4268088
 created 720000: 146 sec, 4931 files/sec, vfs.ufs.dirhash_mem: 6359873
 created 740000: 148 sec, 5000 files/sec, vfs.ufs.dirhash_mem: 6359873
 created 760000: 150 sec, 5066 files/sec, vfs.ufs.dirhash_mem: 6359873
 created 780000: 153 sec, 5098 files/sec, vfs.ufs.dirhash_mem: 6359873
 created 800000: 155 sec, 5161 files/sec, vfs.ufs.dirhash_mem: 6359873
 created 820000: 157 sec, 5222 files/sec, vfs.ufs.dirhash_mem: 6359873
 created 840000: 159 sec, 5283 files/sec, vfs.ufs.dirhash_mem: 6359873
 created 860000: 162 sec, 5308 files/sec, vfs.ufs.dirhash_mem: 6359873
 created 880000: 164 sec, 5365 files/sec, vfs.ufs.dirhash_mem: 6359873
 created 900000: 167 sec, 5389 files/sec, vfs.ufs.dirhash_mem: 6359873
 created 920000: 169 sec, 5443 files/sec, vfs.ufs.dirhash_mem: 6359873
 created 940000: 171 sec, 5497 files/sec, vfs.ufs.dirhash_mem: 6359873
 created 960000: 174 sec, 5517 files/sec, vfs.ufs.dirhash_mem: 6359873
 created 980000: 176 sec, 5568 files/sec, vfs.ufs.dirhash_mem: 6359873
 created 1000000: 179 sec, 5586 files/sec, vfs.ufs.dirhash_mem: 6359873
 removing...removed: 134 sec, 7462 files/sec
 
 Тут на хорошо видно, как dirhash скачкообразно забирает по 50%
 дополнительной памяти, когда хеши переполняются. В этом месте
 наблюдается очень нехороший эффект: в это время, пока dirhash
 инициализирует новую память структурами, все процессы встают.
 Даже top, запущенный через rtprio, замирает. Последний такой скачек
 после 700 тысяч файлов длился аж 40 секунд и именно из-за этих
 скачков падала средняя скорость создания файлов, а пока
 память есть, она заполняется с константной скоростью, последние
 20000 созданы за 3 секунды, как и третья порция. Это хороший плюс.
 
 Стоит отметить, что rm -rf существенно по разному ведет
 себя для рута (euid) и для обычного юзера. От рута он работает вдвое
 дольше у меня и ест вдвое больше памяти. Это связано с какими-то
 тонкостями работы с fts, а точнее сказать с "толстостями" :-)
 
 Hо и от обычного юзера для миллиона он скушал 123M памяти.
 Похоже, память ест не он сам, а fts. find -delete ведет себя не лучше.
 
 Железо: Celeron 900E, 320M, диск IBM 40G ATA100 в режиме ATA33+tags,
 noasync+softupdates, раздел 15G с 1.5Gb и 3.5 миллионов inode свободных.
 Hа async не тестировал.
 
 Итого: три минуты на создание и чуть больше двух на удаление миллиона
 файлов в одном каталоге. Практически все время system time, диск,
 как и прежде, при создании почти не дергался, при удалении softupdates
 сбрасывали изменения пачками, тут скорость диска тоже имела некоторое
 значение.
 
 Hеобязательно ядро хачить. Хотя с затыками надо что-то делать,
 после четверти миллиона (на чем год назад я остановился :) затыки
 уже существенные в момент скачка.
 
 Eugene
 --- slrn/0.9.7.4 (FreeBSD)
  * Origin: Svyaz Service JSC (2:5006/1@fidonet)
 
 

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

 Тема:    Автор:    Дата:  
 Re: INN   Eugene Grosbein   13 Oct 2002 00:21:03 
Архивное /ru.unix.bsd/88696a89a69e.html, оценка 2 из 5, голосов 10
Яндекс.Метрика
Valid HTML 4.01 Transitional