Показать полную графическую версию : Тестирование быстродействия файловых систем.
ruslandh
Так не со всеми параметрами сразу.
Вот у тебя лично, как смонтированны разделы?
ruslandh
04-03-2007, 11:27
UUID=c845af3e-51ed-4b08-b342-f91fa348609c / ext3 defaults 1 1
UUID=7a485083-3512-47f9-ba61-f75122a8c2bb /boot ext3 defaults 1 2
UUID=a1bacb74-b1eb-4da8-88ba-bfb1fe63f613 /home ext3 defaults 1 2
/dev/sda2 /mnt/win_c1 vfat iocharset=cp1251,quiet,codepage=866,umask=0 0 0
/dev/sda3 /mnt/win_c2 vfat iocharset=cp1251,quiet,codepage=866,umask=0 0 0
/dev/sda5 /mnt/win_d vfat iocharset=cp1251,quiet,codepage=866,umask=0 0 0
/dev/sda6 /mnt/win_e vfat iocharset=cp1251,quiet,codepage=866,umask=0 0 0
/dev/sda7 /mnt/win_f vfat iocharset=cp1251,quiet,codepage=866,umask=0 0 0
/dev/sda9 /mnt/win_g vfat iocharset=cp1251,quiet,codepage=866,umask=0 0 0
/dev/sdb5 /mnt/win_h ntfs defaults,quiet,umask=0,nls=cp1251 0 0
UUID=6d77db04-154b-442b-be08-336f0952c1a1 swap swap defaults 0 0
UUID=2acf0afc-14f4-42f6-a222-4f492b2e4e4b /arhiv ext3 defaults 1
UUID=b34fdc30-ded1-45b2-80fd-8c197b40cbf9 /mnt/arhiv ext3 defaults 0
Вопрос, как можно нагрузить диск на чтение, если создается 20 директорий по 200 файлов.
Если все - много, да и последовательное чтение быстрее проходит, чем случайное.
ruslandh
05-03-2007, 09:28
Обрати внимание на
apt-cache search Bonnie++
bonnie++ - Программа для определения скорости работы жестких дисков и файловых систем
bonnie - Unix filesystem performance benchmark
http://www.rpmfind.net/linux/rpm2html/search.php?query=bonnie
это наверно синтетика
хотя у меня тоже надуманный тест, но все же, потом посмотрим
из чего состоит тест
создание 20 директорий, в каждой директории по 200 файлов одного размера
размер файлов от 2 до 1024 кб
чтение - тут еще не определился, есть подозрение что system в Perl медленный, только как проверить.
вот результат некоторой работы. критика приветствуется
#!/bin/tcsh
# определение лог-файлов
mkdir 0777 /tmp/test/log
set filesuffix=`date "+%Y.%m.%d-%H.%M.%S"`
set iostatlog="/tmp/test/log/log.$filesuffix.iostat.log"
set filelog="/tmp/test/log/log.$filesuffix.mkdir.log"
set tablelog="/tmp/test/log/log.$filesuffix.table.log"
# определение слайса
set slice=ad4s1a
set mount="/mnt/ad41"
set start = `date +%s`
echo "#######################################################" >> $filelog
date >> $filelog
# создание виртуального диска 8 мб
mdconfig -a -t malloc -s 8m -u 3 > /dev/null
newfs /dev/md3 > /dev/null
mount /dev/md3 /mnt/test
# создание на виртуальном диске временных файлов для теста
set i=2
set e=1025
while ( $i < $e )
dd if=/dev/zero of=/mnt/test/original-$i bs=1024 count=$i >> /dev/null
set i=`expr $i \* 2`
end
# на всякий случай и на случай преждевременного прекращения работы скрипта
killall -c iostat &
### размер блока может быть равен = 2048, 4096,8192,16384
# установка параметров будущей фалйовой системы и создание файловой системы
set newfsparam="-b 16384"
newfs $newfsparam /dev/ad4s1a
echo "newfs $newfsparam" >> $filelog
# установка параметров монтирования файловой системы и её монтирование
set mountparam=""
mount $mountparam /dev/ad4s1a $mount
echo "mount $mountparam" >> $filelog
# создание подопытной директории
mkdir $mount/test
# вывод конфигурации получившийся файловой системы
bsdlabel /dev/ad4s1 >> $filelog
# запуск вывода расширенной отладочной информации
echo "#######################################################" >> $iostatlog
date >> $iostatlog
echo "iostat ad4" >> $filelog
iostat -x -d ad4 -I 2 >> $iostatlog &
# вычисление размера в начале опыта
echo "size start" >> $filelog
du -chs $mount >> $filelog
echo " " >> $filelog
echo "mkdir" >> $filelog
# запуск вывода отладочной информации
iostat -d ad4 -I 2 >> $iostatlog &
# цикл формирующий директории с файлами
set i=2
set e=1025
set startdir = `date +%s`
while ( $i < $e )
echo "====================== mkdir $i =======================" >> $iostatlog
set startd = `date +%s`
set mkdirtime=`time /tmp/mkdir $mount $i`
echo $mkdirtime >> $filelog
# du -chs $mount >> $filelog
set endd=`date +%s`
set durationd=`expr $endd - $startd`
echo " Duration mkdir $i = " $durationd >> $filelog
echo "====================== mkdir $i =======================" >> $iostatlog
echo "$i,$durationd" >> $tablelog
set i=`expr $i \* 2`
end
# вычисление общего времени затраченного на создание директорий
set enddir=`date +%s`
set durationdir=`expr $enddir - $startdir`
echo " Duration all mkdir=" $durationdir >> $filelog
# подсчет получившегося размера после опыта
echo " " >> $filelog
echo "size end" >> $filelog
du -chs $mount >> $filelog
echo " " >> $filelog
echo "copy" >> $filelog
# цикл копирующий получившиеся директорий с файлами на виртуальный диск
set i=2
set e=1025
set startcopy = `date +%s`
while ( $i < $e )
echo "====================== copy $i =======================" >> $iostatlog
set startcopy = `date +%s`
set copytime=`time /tmp/copy $mount $i >> $filelog`
echo $copytime >> $filelog
set endcopy=`date +%s`
set durationcopy=`expr $endcopy - $startcopy`
echo " Duration copy $i =" $durationcopy >> $filelog
echo "====================== copy $i =======================" >> $iostatlog
echo "$i,$durationcopy" >> $tablelog
set i=`expr $i \* 2`
end
# вычисление общего времени затраченного на копирование
set endcopy=`date +%s`
set durationcopy=`expr $endcopy - $startcopy`
echo " Duration all copy =" $durationcopy >> $filelog
# удаление всех файлов после опыта
echo " " >> $filelog
echo "rm -r " >> $filelog
echo "====================== rm -r =======================" >> $iostatlog
set rmtime=`time rm -r $mount/test >> $filelog`
echo $rmtime >> $filelog
echo "====================== rm -r =======================" >> $iostatlog
# размонтирование подопытной файловой системы
echo "umount " >> $filelog
set unmounttime=`time umount $mount >> $filelog`
echo $unmounttime >> $filelog
# размонтирование виртуального диска и его удаление
umount /mnt/test
mdconfig -d -u 3
# прекращение команд iostat
killall -c iostat &
# вычисление общей продолжительности работы скрипта
set end=`date +%s`
set duration=`expr $end - $start`
echo " Duration =" $duration >> $filelog
вот и образец отчета
ruslandh
09-03-2007, 08:09
# определение слайса
set slice=ad4s1a
set mount="/mnt/ad41"
set start = `date +%s`
Получился FreeBSD специфичный скрипт, по-хорошему надо вначале определить OS
Получился FreeBSD специфичный скрипт, по-хорошему надо вначале определить OS
Это выше моей квалификации :)
И потом вывод команд разве одинаковый?
iostat -x -d ad4 -I 2
iostat -d ad4 -I 2
time - это внутреняя команда tcsh
Это выше моей квалификации
это uname -то ? :)
да нет, всё последующее
как выглядят нужные команды я не знаю, да и тестировать не на чем.
пока фри, тем более там оказывается нужно бы потестировать 10 параметров при создании системы и еще при монтировании, наверно столько же
ruslandh
еще вопрос, как в Linux создаются файловые системы, с какими параметрами. Интересуют размеры блоков, фрагментов и размер inoda.
ruslandh
17-03-2007, 23:06
Igor_I
Честно сказать - теорию не читал. На практике можно посмотреть на конкретных машинах. Как создаются - через parted или fdisk.
Обычно при создании "система" сама выбирает параметры, но возможно есть какие-то ключи.
В ufs размер блока от 4096 до 65384, при этом размер фрагмента равен 1/8-1/2 от блока, mke2fs создает ext2 с блоками 1024-4096, размер фрагмента равен размеру блока, не густо :). Правда по запросу может создать файловую систему и с большими блоками. Но фрагмент останется равным блоку.
ruslandh
24-03-2007, 17:15
Размер фрагмента блока - это вроде особенность FreeBSD файловых систем (в смысле не Linux), хотя могу ошибаться.
Сравнение производительности файловых систем или Reiser4 наносит ответный удар. (http://linuxhelp.150m.com/resources/fs-benchmarks.htm)
Некто John Robert Banks провел серию тестов популярных файловых систем, поддерживаемых Linux (ext2/3/4, reiser3/4/4 with compression, xfs, jfs, fat32, ntfs-3g) на нескольких ядрах (2.6.13 - suse 10 default и 2.6.20-mm1) на AMD Socket AM2 Athlon 64 3500+ system with a Seagate 250 Gig SATA drive and 512 MB RAM.
Представленные результаты весьма интересны апологетам Reiser4 - несмотря на то, что автор утверждает о абсолютном превосходстве Reiser4 над всеми остальными системами, таблицы показывают что далеко не все тесты настолько оптимистичны, а Reiser4 без компрессии практически всегда медленее ext4.
О корректности предоставленных результатов, конечно же, необходимо судить в контексте решаемой задачи.
(c)linux.org.ru
[mzd]
Этот сайт имеет ограничение траффика в 40 мб. Так что, посмотреть наверно только в понедельник.
У меня сейчас изменились приоритеты на автомобильную тему, а значит на компьютеры время не остается. И довести до ума графики не могу уже месяца два.
Выкладываю, что есть. Тестировалась UFS2. C разными блоками/фрагментами.
Тесты все, за исключением одного, FreeBSD зависала при нем.
© OSzone.net 2001-2012
vBulletin v3.6.4, Copyright ©2000-2025, Jelsoft Enterprises Ltd.