LINUX.ORG.RU
ФорумAdmin

Помогите измерить производительность ФС в реальной жизни

 ,


0

2

Привет! Я попробовал btrfs и сильно удивился её производительности в некоторых случаях на реальном SSD:

$ uname -rp
6.5.0-35-generic x86_64

$ sudo mkfs.btrfs /dev/system/btrfs_test

$ sudo mkfs.ext4 -E lazy_itable_init=0,lazy_journal_init=0 /dev/system/ext4_test

$ sudo mount -o compress=lzo /dev/system/btrfs_test /test/

$ sudo mount /dev/system/ext4_test /test/ext4

$ time tar cf /test/ext4/firefox.tar /test/ext4/firefox-127.0
tar cf /test/ext4/firefox.tar /test/ext4/firefox-127.0  3,07s user 23,91s system 40% cpu ***1:06,35*** total

$ time tar cf /test/btrfs/firefox.tar /test/btrfs/firefox-127.0
tar cf /test/btrfs/firefox.tar /test/btrfs/firefox-127.0  0,87s user 8,23s system 56% cpu ***16,166*** total


Пожалуйста, запустите этот простой тест на своей любимой файловой системе и поделитесь результатом, чтобы сравнить.

Давайте выберем наиболее быстрый способ расстаться с данными!

export TEST_DIR=<каталог любимой ФС, где 2 ГБ свободно>

uname -rp

wget https://ftp.mozilla.org/pub/firefox/releases/127.0b5/source/firefox-127.0b5.source.tar.xz -O $TEST_DIR/firefox-127.0b5.source.tar.xz

echo 3 | sudo tee /proc/sys/vm/drop_caches

time tar xf $TEST_DIR/firefox-127.0b5.source.tar.xz -C $TEST_DIR

echo 3 | sudo tee /proc/sys/vm/drop_caches

time tar cf $TEST_DIR/firefox.tar $TEST_DIR/firefox-127.0

Перемещено hobbit из general



Последнее исправление: emmawatsondtypants (всего исправлений: 1)
Ответ на: комментарий от intelfx

Всё ожиданно.

$ sync && echo 3 | sudo tee /proc/sys/vm/drop_caches

$ time tar xf /test/btrfs/firefox-127.0b5.source.tar.xz -C  /test/btrfs/
tar xf /test/btrfs/firefox-127.0b5.source.tar.xz -C /test/btrfs/  25,39s user 9,37s system 118% cpu 29,237 total

$ sync && echo 3 | sudo tee /proc/sys/vm/drop_caches

$ time tar cf /test/btrfs/firefox.tar /test/btrfs/firefox-127.0
tar cf /test/btrfs/firefox.tar /test/btrfs/firefox-127.0  0,88s user 7,85s system 62% cpu 13,907 total

$ sync && echo 3 | sudo tee /proc/sys/vm/drop_caches

$ time tar xf /test/ext4/firefox-127.0b5.source.tar.xz -C /test/ext4/
tar xf /test/ext4/firefox-127.0b5.source.tar.xz -C /test/ext4/  24,78s user 7,47s system 120% cpu 26,845 total

$ sync && echo 3 | sudo tee /proc/sys/vm/drop_caches

$ time tar cf /test/ext4/firefox.tar /test/ext4/firefox-127.0
tar cf /test/ext4/firefox.tar /test/ext4/firefox-127.0  2,69s user 19,83s system 36% cpu 1:01,61 total
emmawatsondtypants
() автор топика
Последнее исправление: emmawatsondtypants (всего исправлений: 1)

Помогите измерить производительность ФС

# apt install sysbench

Тест файловой системы. 1 - генерация файлов для теста, 2 - тест, 3 - удаление сгенерированых файлов

$ sysbench --num-threads=16 --test=fileio --file-total-size=3G --file-test-mode=rndrw prepare

$ sysbench --num-threads=16 --test=fileio --file-total-size=3G --file-test-mode=rndrw run

$ sysbench --num-threads=16 --test=fileio --file-total-size=3G --file-test-mode=rndrw cleanup


anonymous
()
Ответ на: комментарий от emmawatsondtypants

Более реальный тест - это папочку 100 гигов скопировать на разделы ext4/btrfs, замерить скорость, при этом при каждом тесте должно быть свободно более 50% места на ссд и нужно перед ним запустить fstrim -v /mnt/btrfs. Далее для текста скорости чтения grep’ом ищешь файл по содержимому, меряешь скорость. Вместо lzo поставь zstd. Нужно использовать «стандартные» опции для многих дистров + добавь noatime. Вот так замеришь скорости записи и чтения, а потом с помощью compsize посмотри размер файлов на разделе с btrfs. Ну в общем так скорость записи будет низкой, чтения такой же, а место будет здорово экономить если хранишь кучу текстовых данных. В прогах обычно файлы локализации тонну весят

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

как это сделать

$ cat /etc/fstab
UUID=32d5833b-2dc7-4c87-987c-a2572dc3a98e	/	ext4	defaults,noatime,errors=remount-ro	0	1
UUID=b219437c-3f27-4bed-b727-b004d6a08dee	none	swap	defaults				0	0
tmpfs						/tmp	tmpfs	defaults,nosuid,nodev			0	0
anonymous
()
Ответ на: комментарий от emmawatsondtypants

Ну, вот у тебя уже время распаковки в btrfs больше, чем в ext4. Это уже гораздо ближе к истине. А на чтение ext4 и правда всасывает основательно :-)

В качестве бонуса bcachefs по запросам трудящихся @t184256.

Ext4:

=============================
==== Running test (ext4) ====
=============================
:: EXT4: Creating ext4 on /dev/disk/by-partlabel/test1 (-m 0 -E lazy_itable_init=0,lazy_journal_init=0 -L test-ext4 -F)
-> EXT4: 'mkfs.ext4' '-m' '0' '-E' 'lazy_itable_init=0,lazy_journal_init=0' '-L' 'test-ext4' '-F' '/dev/disk/by-partlabel/test1'
<...>
:: EXT4: Mounting ext4 on /dev/disk/by-partlabel/test1 to /mnt/t-ext4 (noatime,discard)
-> EXT4: 'mount' '--mkdir' '/dev/disk/by-partlabel/test1' '/mnt/t-ext4' '-o' 'noatime,discard'
-> EXT4: 'mkdir' '-p' '/mnt/t-ext4/test1' '/mnt/t-ext4/test2'

:: EXT4: #1: copying payload onto disk: /mnt/ram/firefox-127.0b5.source.tar -> /mnt/t-ext4/firefox-127.0b5.source.tar
-> EXT4: ['sync'] + ['sysctl' '-q' 'vm.drop_caches=3']
-> EXT4: ['cp' '-a' '/mnt/ram/firefox-127.0b5.source.tar' '-T' '/mnt/t-ext4/firefox-127.0b5.source.tar'] + ['sync']
== 0m1,030s real  0m0,000s user  0m1,000s system  97,08% cpu

:: EXT4: #2: extracting payload from RAM: /mnt/ram/firefox-127.0b5.source.tar -> /mnt/t-ext4/test1
-> EXT4: ['sync'] + ['sysctl' '-q' 'vm.drop_caches=3']
-> EXT4: ['tar' '-xf' '/mnt/ram/firefox-127.0b5.source.tar' '-C' '/mnt/t-ext4/test1'] + ['sync']
== 0m4,771s real  0m0,440s user  0m4,071s system  94,53% cpu

:: EXT4: #3: extracting payload from disk: /mnt/t-ext4/firefox-127.0b5.source.tar -> /mnt/t-ext4/test2
-> EXT4: ['sync'] + ['sysctl' '-q' 'vm.drop_caches=3']
-> EXT4: ['tar' '-xf' '/mnt/t-ext4/firefox-127.0b5.source.tar' '-C' '/mnt/t-ext4/test2'] + ['sync']
== 0m5,309s real  0m0,428s user  0m4,340s system  89,80% cpu

:: EXT4: #4: archiving extracted payload into RAM
-> EXT4: ['sync'] + ['sysctl' '-q' 'vm.drop_caches=3']
-> EXT4: ['tar' '-cf' '/mnt/ram/dummy.tar' '-C' '/mnt/t-ext4/test1' '.'] + ['sync']
== 0m27,906s real  0m0,471s user  0m3,627s system  14,68% cpu

:: EXT4: #5: archiving extracted payload onto disk
-> EXT4: ['sync'] + ['sysctl' '-q' 'vm.drop_caches=3']
-> EXT4: ['tar' '-cf' '/mnt/t-ext4/dummy.tar' '-C' '/mnt/t-ext4/test2' '.'] + ['sync']
== 0m29,200s real  0m0,539s user  0m3,883s system  15,14% cpu

:: EXT4: Cleaning up
-> EXT4: 'umount' '/mnt/t-ext4'

Btrfs:

==============================
==== Running test (btrfs) ====
==============================
:: BTRFS: Creating btrfs on /dev/disk/by-partlabel/test2 (--csum xxhash64 -L test-btrfs -f)
-> BTRFS: 'mkfs.btrfs' '--csum' 'xxhash64' '-L' 'test-btrfs' '-f' '/dev/disk/by-partlabel/test2'
btrfs-progs v6.8.1
<...>
:: BTRFS: Mounting btrfs on /dev/disk/by-partlabel/test2 to /mnt/t-btrfs (noatime,compress=lzo,discard=async,flushoncommit)
-> BTRFS: 'mount' '--mkdir' '/dev/disk/by-partlabel/test2' '/mnt/t-btrfs' '-o' 'noatime,compress=lzo,discard=async,flushoncommit'
-> BTRFS: 'mkdir' '-p' '/mnt/t-btrfs/test1' '/mnt/t-btrfs/test2'

:: BTRFS: #1: copying payload onto disk: /mnt/ram/firefox-127.0b5.source.tar -> /mnt/t-btrfs/firefox-127.0b5.source.tar
-> BTRFS: ['sync'] + ['sysctl' '-q' 'vm.drop_caches=3']
-> BTRFS: ['cp' '-a' '/mnt/ram/firefox-127.0b5.source.tar' '-T' '/mnt/t-btrfs/firefox-127.0b5.source.tar'] + ['sync']
== 0m0,966s real  0m0,000s user  0m0,909s system  94,17% cpu

:: BTRFS: #2: extracting payload from RAM: /mnt/ram/firefox-127.0b5.source.tar -> /mnt/t-btrfs/test1
-> BTRFS: ['sync'] + ['sysctl' '-q' 'vm.drop_caches=3']
-> BTRFS: ['tar' '-xf' '/mnt/ram/firefox-127.0b5.source.tar' '-C' '/mnt/t-btrfs/test1'] + ['sync']
== 0m6,325s real  0m0,464s user  0m5,318s system  91,42% cpu

:: BTRFS: #3: extracting payload from disk: /mnt/t-btrfs/firefox-127.0b5.source.tar -> /mnt/t-btrfs/test2
-> BTRFS: ['sync'] + ['sysctl' '-q' 'vm.drop_caches=3']
-> BTRFS: ['tar' '-xf' '/mnt/t-btrfs/firefox-127.0b5.source.tar' '-C' '/mnt/t-btrfs/test2'] + ['sync']
== 0m6,581s real  0m0,473s user  0m5,601s system  92,29% cpu

:: BTRFS: #4: archiving extracted payload into RAM
-> BTRFS: ['sync'] + ['sysctl' '-q' 'vm.drop_caches=3']
-> BTRFS: ['tar' '-cf' '/mnt/ram/dummy.tar' '-C' '/mnt/t-btrfs/test1' '.'] + ['sync']
== 0m6,162s real  0m0,388s user  0m3,584s system  64,44% cpu

:: BTRFS: #5: archiving extracted payload onto disk
-> BTRFS: ['sync'] + ['sysctl' '-q' 'vm.drop_caches=3']
-> BTRFS: ['tar' '-cf' '/mnt/t-btrfs/dummy.tar' '-C' '/mnt/t-btrfs/test2' '.'] + ['sync']
== 0m7,873s real  0m0,386s user  0m4,353s system  60,20% cpu

:: BTRFS: Cleaning up
-> BTRFS: 'umount' '/mnt/t-btrfs'

Bcachefs:

=================================
==== Running test (bcachefs) ====
=================================
:: BCACHEFS: Creating bcachefs on /dev/disk/by-partlabel/test3 (--compression lz4 --discard -L test-bcachefs -f)
-> BCACHEFS: 'mkfs.bcachefs' '--compression' 'lz4' '--discard' '-L' 'test-bcachefs' '-f' '/dev/disk/by-partlabel/test3'
<...>
:: BCACHEFS: Mounting bcachefs on /dev/disk/by-partlabel/test3 to /mnt/t-bcachefs (noatime)
-> BCACHEFS: 'mount' '--mkdir' '/dev/disk/by-partlabel/test3' '/mnt/t-bcachefs' '-o' 'noatime'
-> BCACHEFS: 'mkdir' '-p' '/mnt/t-bcachefs/test1' '/mnt/t-bcachefs/test2'

:: BCACHEFS: #1: copying payload onto disk: /mnt/ram/firefox-127.0b5.source.tar -> /mnt/t-bcachefs/firefox-127.0b5.source.tar
-> BCACHEFS: ['sync'] + ['sysctl' '-q' 'vm.drop_caches=3']
-> BCACHEFS: ['cp' '-a' '/mnt/ram/firefox-127.0b5.source.tar' '-T' '/mnt/t-bcachefs/firefox-127.0b5.source.tar'] + ['sync']
== 0m3,609s real  0m0,005s user  0m0,884s system  24,63% cpu

:: BCACHEFS: #2: extracting payload from RAM: /mnt/ram/firefox-127.0b5.source.tar -> /mnt/t-bcachefs/test1
-> BCACHEFS: ['sync'] + ['sysctl' '-q' 'vm.drop_caches=3']
-> BCACHEFS: ['tar' '-xf' '/mnt/ram/firefox-127.0b5.source.tar' '-C' '/mnt/t-bcachefs/test1'] + ['sync']
== 0m10,403s real  0m0,560s user  0m9,307s system  94,85% cpu

:: BCACHEFS: #3: extracting payload from disk: /mnt/t-bcachefs/firefox-127.0b5.source.tar -> /mnt/t-bcachefs/test2
-> BCACHEFS: ['sync'] + ['sysctl' '-q' 'vm.drop_caches=3']
-> BCACHEFS: ['tar' '-xf' '/mnt/t-bcachefs/firefox-127.0b5.source.tar' '-C' '/mnt/t-bcachefs/test2'] + ['sync']
== 0m14,008s real  0m0,523s user  0m10,644s system  79,72% cpu

:: BCACHEFS: #4: archiving extracted payload into RAM
-> BCACHEFS: ['sync'] + ['sysctl' '-q' 'vm.drop_caches=3']
-> BCACHEFS: ['tar' '-cf' '/mnt/ram/dummy.tar' '-C' '/mnt/t-bcachefs/test1' '.'] + ['sync']
== 0m22,476s real  0m0,585s user  0m5,282s system  26,10% cpu

:: BCACHEFS: #5: archiving extracted payload onto disk
-> BCACHEFS: ['sync'] + ['sysctl' '-q' 'vm.drop_caches=3']
-> BCACHEFS: ['tar' '-cf' '/mnt/t-bcachefs/dummy.tar' '-C' '/mnt/t-bcachefs/test2' '.'] + ['sync']
== 0m26,635s real  0m0,590s user  0m5,764s system  23,85% cpu

:: BCACHEFS: Cleaning up
-> BCACHEFS: 'umount' '/mnt/t-bcachefs'

src: https://github.com/intelfx/bin/blob/master/landfill/stupid-fs-test.sh

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

Спасибо, вы большой энтузиаст!

А /dev/disk/by-partlabel/test{1..3} — это рамдиски? Иначе откуда такая скорость на tar cf?

Если рамдиски, то тест выходит не очень информативный. От инлайновой компрессии можно ожидать выгоды на в узком месте в шине между диском и процессором, а так этот фактор из реальной жизни просто не учитывается.

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

это рамдиски?

Конечно, нет. Это NVMe.

Иначе откуда такая скорость на tar cf?

Там нигде больше 500 MB/s не было. If anything, всё как-то слишком медленно, я даже разочарован состоянием файловых систем в линуксе.

intelfx ★★★★★
()
Последнее исправление: intelfx (всего исправлений: 1)
Ответ на: комментарий от intelfx

рамдиски?

Конечно, нет.

Очень интересно, откуда ext4 в два раза быстрее моих и что я делаю не так!

Может, конечно, мои i7-9700 и 2 x 960EVO @ RAID0 просто уже сильно медленее.

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

Очень интересно, откуда ext4 в два раза быстрее моих и что я делаю не так!

Ну, у меня 128G рамы и dirty limits были выкручены в 16G.

Правда, не то чтобы это должно как-то играть — sync был частью замеров. Открутил обратно в 1G — ничего не поменялось.

Может, конечно, мои i7-9700 и 2 x 960EVO @ RAID0 просто уже сильно медленее

Может. У меня топовый Zen 3, DDR4-3600 и SN850 (PCIe Gen4).

intelfx ★★★★★
()
Последнее исправление: intelfx (всего исправлений: 1)