LINUX.ORG.RU
ФорумTalks

Фрагментация ext3: маленькое исследование


0

0

Спорили мы тут по поводу нужна или нет дефрагментация в ext3

в итоге написан вот такой скрипт: http://www.copypastecode.com/8361/?view=lines

делает три алгоритма записи:

1. записывает N файлов по M килобайт в указанное место обычным способом "открыли - записали М килобайт - закрыли"

2. записывает N файлов по M килобайт способом "открыли файл 1, записали 1Кб, закрыли файл 1, открыли файл 2..."

3. записывает N файлов по M килобайт способом "открыли N файлов, записали 1Кбв в файл 1, 1Кб в файл 2..."

далее на записанный пул файлов натравливаем tar -c и замеряем время.

результаты интересные (100 файлов по 100 мегабайт):

первый вариант: 1,36s user 7,72s system 5% cpu 2:58,08 total

второй вариант: 1,31s user 7,86s system 0% cpu 44:24,93 total

третий вариант: 1,31s user 7,38s system 4% cpu 3:28,47 total

видно, что второй случай самый фрагментированный, задержка в 15 раз, однако он самый невероятный. Третий случай - типичный случай с логами, однако, как видно замедление работы в пределах 15% всего.

то есть вывод что дефрагментатор в общем-то не нужен верный.

кто что думает?


Re: Фрагментация ext3: маленькое исследование

> кто что думает?

я думаю, что ext3 говно и XFS ее заруливает

phasma ★☆ ()

Re: Фрагментация ext3: маленькое исследование

Занимался этой шнягой еще давно, fat32 на win98 отсасывает, точнее умирает.

linux4ever ()

Re: Фрагментация ext3: маленькое исследование

Забавно. А можешь погонять на разных ФС?
Ext4, ReiserFS, Reiser4

Pavval ★★★★★ ()
Ответ на: У меня этих систем нет. от Camel

Re: У меня этих систем нет.

>А у меня нету твоего тестового оборудования :-]

а не нужно тоже оборудование: интересно соотношение времен между 1 - 2 - 3, а не абсолютные цифры. то есть подойдет любой винчестер с наличием свободного места ~ 10 гигов

fsync ()
Ответ на: Re: У меня этих систем нет. от Pavval

Re: У меня этих систем нет.

он там хелп показывает

-n количество файлов

-s размер одного файла (в КБ)

и путь

это будет вариант 1

добавим ключ -f - будет вариант 2

заменим -f на -2 будет вариант 3

fsync ()
Ответ на: Re: У меня этих систем нет. от Pavval

Re: У меня этих систем нет.

perl test_defrag.pl -s 100000 -n 100 path/to

perl test_defrag.pl -s 100000 -n 100 -f path/to

perl test_defrag.pl -s 100000 -n 100 -2 path/to

fsync ()
Ответ на: Re: У меня этих систем нет. от fsync

Re: У меня этих систем нет.

где path/to это путь к каталогу с временными файлами.

ну и не забудьте между пробами очищать этот каталог

fsync ()

Re: Фрагментация ext3: маленькое исследование

>кто что думает?

UFS2 рулит — фрагментация не более 3% на ~4ГБ разделе за два года интенсивной эксплуатации (перекомпилирование исходников опер.системы примерно два раза в неделю).

iZEN ★★★★★ ()
Ответ на: Re: У меня этих систем нет. от fsync

Re: У меня этих систем нет.

test@valentine-pc:~$ ./code8361.pl -2 -n 100000 -s 1 ~/3/
100.0 % Can not open file '/home/test/3/001022.1kb.file': Too many open files

Чем лечить это? Никогда с ограничениями дело не имел (да, ламер).

Pavval ★★★★★ ()

Re: Фрагментация ext3: маленькое исследование

pam_limits должен быть в стеке модулей pam.

man pam_limits 

EXAMPLES
       For the services you need resources limits (login for example) put a the
       following line in /etc/pam.d/login as the last line for that service
       (usually after the pam_unix session line):

           #%PAM-1.0
           #
           # Resource limits imposed on login sessions via pam_limits
           #
           session  required  pam_limits.so

annoynimous ★★★★★ ()

Re: Фрагментация ext3: маленькое исследование

> видно, что второй случай самый фрагментированный, задержка в 15 раз, однако он самый невероятный.

очень даже вероятный, более того -- суровая реальность. При P2P (torrent, e2tk, etc) есть альтернатива -- скачивая "windows7.iso" можно либо создать честный файл из /dev/zero заранее, и по мере поступления кусочков записывать их в соответствующие места. Либо создать дырявый файл, и по мере поступления кусочков "заполнять дырки". Во втором случае мы получаем ОЧЕНЬ фрагментированный файл, и любое действие с ним (e.g. "cat windows7.iso > /dev/null") происходит медленно (100Mb/min) и сопровождается сильным шуршанием диска.

pupok ★★ ()

Re: Фрагментация ext3: маленькое исследование

Делай выводы. Я уже сделал.

#### ---  XFS ---#

# lvcreate -n testfs -L20G vg1
# mkfs.xfs ...
# mount ... /tmp/testfs

-------------   1   --------------

$ ./code8361.pl -n 100 -s 102400 /tmp/testfs/test/

# /usr/sbin/xfs_db -r -c frag /dev/mapper/vg1-testfs
actual 221, ideal 102, fragmentation factor 53.85%
# каждый файл разделен на 2-е части по 50М, предположительно

$ time tar cf - . | cat > /dev/null

real    3m2.985s
user    0m3.304s
sys     0m56.960s


-------------   2   --------------

$ ./code8361.pl -f -n 100 -s 102400 /tmp/testfs/test/

# /usr/sbin/xfs_db -r -c frag /dev/mapper/vg1-testfs
actual 11248, ideal 102, fragmentation factor 99.09%
# каждый файл разделен на 100 частей по 1М, предположительно

$ time tar cf - . | cat > /dev/null

real    4m34.178s
user    0m3.364s
sys     0m54.911s


-------------   3   --------------

$ ./code8361.pl -2 -n 100 -s 102400 /tmp/testfs/test/

# /usr/sbin/xfs_db -r -c frag /dev/mapper/vg1-testfs
actual 8645, ideal 102, fragmentation factor 98.82%
# каждый файл разделен на 100 частей по 1М, предположительно

$ time tar cf - . | cat > /dev/null

real    4m14.526s
user    0m4.316s
sys     0m53.095s



# umount ...
# lvremove vg1/testfs

sdio ★★★★★ ()

Re: Фрагментация ext3: маленькое исследование

Reiser4 со сжатием, 100 файлов по 10 мегабайт:

test@valentine-pc:~$ time tar cf - a | cat > /dev/null

real 0m2.969s
user 0m0.148s
sys 0m2.528s
test@valentine-pc:~$ time tar cf - b | cat > /dev/null

real 0m3.063s
user 0m0.108s
sys 0m2.588s
test@valentine-pc:~$ time tar cf - c | cat > /dev/null

real 0m2.925s
user 0m0.116s
sys 0m2.560s


test@valentine-pc:~$ du -h *
982M a
982M b
982M c
64K code8361.pl

Как-то слишком быстро...

Pavval ★★★★★ ()

Re: Фрагментация ext3: маленькое исследование

Для -n 100000 -s 1:

* real 0m15.294s user 0m5.160s sys 0m4.700s

* real 0m14.197s user 0m5.200s sys 0m4.680s

* real 0m26.672s user 0m5.250s sys 0m5.050s

Для -n 100 -s 100:

* real 0m0.264s user 0m0.020s sys 0m0.160s

* real 0m0.276s user 0m0.010s sys 0m0.160s

* real 0m0.290s user 0m0.020s sys 0m0.150s

Все запускал по одному разу на ext3.

goose ()

Re: Фрагментация ext3: маленькое исследование

Шот я не в восторге от reiser3, видать пришло время её закапывать.



sauron@northrend ~/soft $ time perl test_defrag.pl -s 10000 -n 100 /tmp/
100.0 %

real 0m17.653s
user 0m7.447s
sys 0m5.033s
sauron@northrend ~/soft $ time perl test_defrag.pl -s 10000 -n 100 -f /tmp/
100.0 %

real 2m19.968s
user 0m39.400s
sys 0m27.734s
sauron@northrend ~/soft $ time perl test_defrag.pl -s 10000 -n 100 -2 /tmp/
100.0 %

real 1m1.965s
user 0m22.444s
sys 0m7.200s

Gorthauer ★★★★★ ()

Re: Фрагментация ext3: маленькое исследование

Тест имхо надуманный, лучше проверять после полугода активной работы с винтом.

Dudraug ★★★★★ ()

Re: Фрагментация ext3: маленькое исследование

Я не думаю, я знаю. Есть на сервере RAID 10 партиция на 2 Tb. Так вот она занята вся, и инфа там менялась местами часто. Ext 3. Так вот с нкеоторых пор там создать пустой каталог стало занимать 30-50 sec.

Barlog_M ()

Re: Фрагментация ext3: маленькое исследование

>>UFS2 рулит
>А оно разве не тормозит пермаментно как фрагментированный ФАТ?


Ответь мне, в каком году ты последний раз её смотрел, и я скажу, кто ты.

iZEN ★★★★★ ()

Re: Фрагментация ext3: маленькое исследование

>Т.е. ZFS уже УГ?

Я этого не говорил.
Ext3 и UFS2 — системы одного периода разработки и обкатки (2001...2003гг).

>Всё течет, всё меняется.


Текут даже программы на Java.

iZEN ★★★★★ ()

Re: Фрагментация ext3: маленькое исследование

ZFS

# uname -a
SunOS hostname 5.10 Generic_118833-33 sun4u sparc SUNW,Sun-Fire-V890


# zpool status
  pool: mypool
 state: ONLINE
 scrub: none requested
config:

        NAME        STATE     READ WRITE CKSUM
        mypool      ONLINE       0     0     0
          mirror    ONLINE       0     0     0
            c1t2d0  ONLINE       0     0     0
            c1t3d0  ONLINE       0     0     0
          mirror    ONLINE       0     0     0
            c1t4d0  ONLINE       0     0     0
            c1t5d0  ONLINE       0     0     0

errors: No known data errors


# zfs create mypool/testfs
# zfs set quota=15G mypool/testfs
# zfs set mountpoint=/testfs mypool/testfs

------------------- 1 ---------------------
# ./testfs.pl -s 102400 -n 100 test/
# работал 4 минуты

# timex tar cf - test | cat > /dev/null

real     1:57.49
user        2.15
sys        42.13


------------------- 2 ---------------------
# ./testfs.pl -f -s 102400 -n 100 test/
# 36 минут работал

# timex tar cf - test | cat > /dev/null

real     2:08.30
user        2.12
sys        40.00


------------------- 3 ---------------------
# ./testfs.pl -2 -s 102400 -n 100 test/
#  работал 14 минут

# timex tar cf - test | cat > /dev/null

real     2:04.93
user        2.17
sys        41.74

sdio ★★★★★ ()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.