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


ru.unix.bsd

 
 - RU.UNIX.BSD ------------------------------------------------------------------
 From : Vlad Gnatov                          2:5020/400     15 Jan 2007  16:46:20
 To : Eugene Grosbein
 Subject : Re: создание/удаление миллиона файлов
 -------------------------------------------------------------------------------- 
 
 Eugene Grosbein пишет:
 
 EG>>>>> Скорость создания - 666 файлов в секунду против 10000 на четверке.
 EG>>>>> то есть 6% от прежней. Вот это прогресс...
 EG>>> SATA? TQ работает?
 VG>> Как я и предполагал, дело совсем не в железе.
 VG>> Алокатор dirhash тупой. Т.к. dirhash при resize создается заново,
 VG>> то начиная с некоторого размера линейное увеличение невыгодно.
 EG> Ты говоришь немножко о другой проблеме. У меня еще до расширения
 EG> хеша скорость создания первых 10000 файлов - 666 штук в секунду.
 EG> От чего это может быть, такие тормоза?
 
 Я шо тилипат? Попробуйте максимально исключить влияние железа.
 Т.е. создайте диск в памяти и проверьте на нем.
 
 p.s. Пока рекорд 35 сек на похаканом алокаторе. Обычные сигейты
 ST3400620AS, ST3320620A.
 
 p.p.s. Также можете заменить скрипт программой:
 
 #include <sys/types.h>
 #include <sys/stat.h>
 #include <sys/sysctl.h>
 #include <fcntl.h>
 #include <unistd.h>
 #include <stdio.h>
 #include <time.h>
 
 int main(void)
 {
     static time_t tval;
     int fd, n, btime, spent, i, j;
     int count = 50;
     int step = 20000;
 
     size_t len;
     int mem;
 
     len = sizeof(mem);
 
     if (mkdir("d", 0700) < 0)
   perror("mkdir");
 
     sysctlbyname("vfs.ufs.dirhash_expandratio", &mem, &len, NULL, 0);
     printf("vfs.ufs.ufs.dirhash_expandratio=%d\n", mem);
 
     sysctlbyname("vfs.ufs.dirhash_maxmem", &mem, &len, NULL, 0);
     printf("vfs.ufs.dirhash_maxmem=%d\n", mem);
 
     printf("creating...\n");
 
     btime = time(&tval);
     n = spent = 0;
     for (i=1; i<=count; i++) {
   for (j=1; j<=step; j++) {
       char name[10];
       sprintf(name, "d/%d.%d", i, j);
       fd = open(name, O_CREAT, 0600);
       close(fd);
   }
   n += step;
   spent = time(&tval) - btime;
   printf("created %d: %d sec, %d files/sec, ", n, spent, n/spent);
 
   sysctlbyname("vfs.ufs.dirhash_mem", &mem, &len, NULL, 0);
   printf("vfs.ufs.dirhash_mem=%d\n", mem);
     }
 
     printf("removing...\n");
 
     btime = time(&tval);
     for (i=1; i<=count; i++) {
   for (j=1; j<=step; j++) {
       char name[10];
       sprintf(name, "d/%d.%d", i, j);
       unlink(name);
   }
     }
 
     if (rmdir("d") < 0)
   perror("rmdir");
 
     spent = time(&tval) - btime;
     printf("removed: %d sec, %d files/sec\n", spent, (count * step) / spent);
 
     return(0);
 }
 -- 
 Отправлено через сервер Форумы@mail.ru - http://talk.mail.ru
 --- ifmail v.2.15dev5.3
  * Origin: Talk.ru (2:5020/400)
 
 

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

 Тема:    Автор:    Дата:  
 Re: создание/удаление миллиона файлов   Vlad Gnatov   15 Jan 2007 16:46:20 
Архивное /ru.unix.bsd/6488e9db0617.html, оценка 2 из 5, голосов 10
Яндекс.Метрика
Valid HTML 4.01 Transitional