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% всего.

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

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


Ответ на: комментарий от phasma

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

можешь скачать тест и провести все три теста на xfs? было бы интересно

fsync
() автор топика

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

linux4ever
()
Ответ на: комментарий от Pavval

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

>Ext4, ReiserFS, Reiser4

скрипт для того и выложен: может кто погоняет а у меня этих систем нет :(

fsync
() автор топика
Ответ на: комментарий от fsync

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

>скрипт для того и выложен: может кто погоняет а у меня этих систем нет

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

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

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

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

fsync
() автор топика
Ответ на: комментарий от Pavval

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

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

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

и путь

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

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

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

fsync
() автор топика
Ответ на: комментарий от fsync

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

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

fsync
() автор топика

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

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

iZEN ★★★★★
()
Ответ на: комментарий от fsync

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 ★★★★★
()
Ответ на: комментарий от sdio

дык для этого теста. Все-таки как поднять лимит?

test@valentine-pc:~$ ulimit -n 120000
bash: ulimit: open files: cannot modify limit: Operation not permitted

Pavval ★★★★★
()
Ответ на: комментарий от Pavval

Добавил

* soft nofile 120000
* hard nofile 120000

в /etc/security/limits.conf

перезашел в пользователя test. ulimit -n все равно не дает поднять лимит. ЧЯДНТ?

Pavval ★★★★★
()
Ответ на: комментарий от Pavval

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 ★★★★★
()

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

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

pupok ★★
()
Ответ на: комментарий от annoynimous

у меня он добавлен по-умолчанию утилитой authconfig

session required pam_limits.so

annoynimous ★★★★★
()

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

#### ---  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 ★★★★★
()
Ответ на: комментарий от Pavval

>> А зачем тебе 100000 однокилобайтных файлов?
> дык для этого теста.


Ты уверен? Требовалось 100 файлов по 100М каждый

sdio ★★★★★
()

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 ★★★★★
()
Ответ на: комментарий от Pavval

Данные не в кеше, т.к. тесты запускал после перезагрузки системы.

Pavval ★★★★★
()

Для -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
()
Ответ на: комментарий от as33

> я думаю, что ты не думаешь :3

привет, слатки. Почему это я не думаю ?)

phasma ★☆
()
Ответ на: комментарий от Gorthauer

Шот я не в восторге от 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 ★★★★★
()
Ответ на: комментарий от Gorthauer

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

Pavval ★★★★★
()

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

Dudraug ★★★★★
()

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

Barlog_M
()
Ответ на: комментарий от Gorthauer

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


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

iZEN ★★★★★
()
Ответ на: комментарий от shahid

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

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

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


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

iZEN ★★★★★
()

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 ★★★★★
()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.