ZFS использование кеша (arc)

12 3
Mage1
На сайте с 05.07.2007
Offline
83
6744

Здравствуйте.

Имеется сервер с 12 Гб ОЗУ. При генерации страниц используется чтение текстовых файлов с диска, общий объем около 11 Гб. Профилирование показывает, что больше всего времени при исполнении скриптов тратится именно на чтение текстовых файлов (винты 3xSATA в массиве ZFS raidz). Хочу отдать 6 Гб ОЗУ кешу ZFS, рассчитывая на то, что самые часто используемые файлы попадут в ОЗУ и среднее время улучшится. На разделе с mysql primarycache=metadata. Установил vfs.zfs.arc_max 6G, но используется только 1400 Мб. При этом на чтение 20-ти файлов по 50 кбайт уходит до 2-х секунд (в часы "пик"; повторное чтение тех же 20-ти файлов не происходит быстрее, в кеш они не попадают, следовательно). Возможно, кто-то подскажет, как заставить ZFS использовать кеш полнее? Вот выдача скрипта

arc_summary.pl
------------------------------------------------------------------------
System Summary Fri Jan 7 20:20:39 2011

FreeBSD 8.0-STABLE #1: Tue Mar 9 12:36:22 UTC 2010 root

Kernel Version: 800504 (osreldate)

Hardware Platform: amd64
Processor Architecture: amd64

8:20PM up 10 days, 2:35, 2 users, load averages: 0.22, 0.20, 0.17
------------------------------------------------------------------------

Physical Memory: 12263.99M
Page Size: 4096

Kernel Memory
TOTAL: 1135.77M
DATA: 98.69% 1120.88M
TEXT: 1.31% 14.89M

ARC Summary
Storage pool Version: 14 (spa)
Filesystem Version: 3 (zpl)
Memory Throttle Count: 1084

ARC Misc:
Deleted: 46591582
Recycle Misses: 53124329
Mutex Misses: 346671
Evict Skips: 346671

ARC Size:
Current Size: 22.69% 1393.97M (arcsize)
Target Size: (Adaptive) 16.67% 1024.00M (c)
Min Size (Hard Limit): 16.67% 1024.00M (c_min)
Max Size (High Water): ~6:1 6144.00M (c_max)

ARC Size Breakdown:
Recently Used Cache Size: 73.46% 1024.00M (p)
Frequently Used Cache Size: 26.54% 369.97M (arcsize-p)

ARC Hash Breakdown:
Elements Max: 444308
Elements Current: 15.23% 67687
Collisions: 17802432
Chain Max: 11
Chains: 7356

ARC Efficiency:
Cache Access Total: 564059878
Cache Hit Ratio: 86.23% 486362988
Cache Miss Ratio: 13.77% 77696890
Actual Hit Ratio: 84.51% 476669702

Data Demand Efficiency: 90.47%
Data Prefetch Efficiency: 21.45%

CACHE HITS BY CACHE LIST:
Anonymous: --% Counter Rolled.
Most Recently Used: 23.26% 113124076 (mru)
Most Frequently Used: 74.75% 363545626 (mfu)
Most Recently Used Ghost: 2.40% 11652972 (mru_ghost)
Most Frequently Used Ghost: 6.62% 32174703 (mfu_ghost)

CACHE HITS BY DATA TYPE:
Demand Data: 82.31% 400348953
Prefetch Data: 0.70% 3423529
Demand Metadata: 15.48% 75282378
Prefetch Metadata: 1.50% 7308128

CACHE MISSES BY DATA TYPE:
Demand Data: 54.28% 42172596
Prefetch Data: 16.14% 12537851
Demand Metadata: 22.62% 17574445
Prefetch Metadata: 6.97% 5411998

L2 ARC Stats: (enabled with access > 0) 0

VDEV Cache Summary
Access Total: 42402903
Hits Ratio: 33.53% 14219105
Miss Ratio: 66.47% 28183798
Delegations: 1071278

ZFS Tunable (sysctl):
kern.maxusers=384
vfs.zfs.arc_meta_limit=1610612736
vfs.zfs.arc_meta_used=1456834896
vfs.zfs.mdcomp_disable=0
vfs.zfs.arc_min=1073741824
vfs.zfs.arc_max=6442450944
vfs.zfs.zfetch.array_rd_sz=1048576
vfs.zfs.zfetch.block_cap=256
vfs.zfs.zfetch.min_sec_reap=2
vfs.zfs.zfetch.max_streams=8
vfs.zfs.prefetch_disable=0
vfs.zfs.recover=0
vfs.zfs.txg.synctime=5
vfs.zfs.txg.timeout=30
vfs.zfs.scrub_limit=10
vfs.zfs.vdev.cache.bshift=16
vfs.zfs.vdev.cache.size=10485760
vfs.zfs.vdev.cache.max=16384
vfs.zfs.vdev.aggregation_limit=131072
vfs.zfs.vdev.ramp_rate=2
vfs.zfs.vdev.time_shift=6
vfs.zfs.vdev.min_pending=4
vfs.zfs.vdev.max_pending=35
vfs.zfs.cache_flush_disable=1
vfs.zfs.zil_disable=0
vfs.zfs.version.zpl=3
vfs.zfs.version.vdev_boot=1
vfs.zfs.version.spa=14
vfs.zfs.version.dmu_backup_stream=1
vfs.zfs.version.dmu_backup_header=2
vfs.zfs.version.acl=1
vfs.zfs.debug=0
vfs.zfs.super_owner=0
vm.kmem_size=8589934592
vm.kmem_size_scale=3
vm.kmem_size_min=0
vm.kmem_size_max=8589934592

Есть вариант кешировать файлы самому, используя, к примеру, memcached, но, кажется, если в ФС есть такая возможность, она должна работать быстрее и без костылей.

Andreyka
На сайте с 19.02.2005
Offline
822
#1

Похоже что ZFS на фре существует для галочки, а в продакшене ее использовать нельзя...

Не стоит плодить сущности без необходимости
Mage1
На сайте с 05.07.2007
Offline
83
#2
Andreyka:
Похоже что ZFS на фре существует для галочки, а в продакшене ее использовать нельзя...

обидно однако :( неужели придется делать костыли?

R
На сайте с 14.02.2010
Offline
77
#3
Andreyka:
Похоже что ZFS на фре существует для галочки, а в продакшене ее использовать нельзя...

сейчас сюда придут айзен и лисяра и надают вам тумаков :D

Mage1
На сайте с 05.07.2007
Offline
83
#4

ну же, господа, предполагайте изложения, т.е. излагайте предположения.

rtyug
На сайте с 13.05.2009
Offline
263
#5
Mage1:
Профилирование показывает, что больше всего времени при исполнении скриптов тратится именно на чтение текстовых файлов (винты 3xSATA в массиве ZFS raidz).

...много их и что за файлы?

может быть посмотреть скрипты, например, используется ли там буферизация при чтении файлов?

может быть использовать AIO (ассинхронный ввод/вывода)

так же может быть кэшировать дескрипторы открываемых файлов в скрипте...

файлы стоят в одном каталоге? может в ввиде кэша по каталогам их расставить...

может быть использовать PostgreSQL или какую-то распределенную систему для хранения и отдачи файлов... (картинки и т.д.)

ZFS - не хранит данные распределенно, а только очень надежная FS

Спалил тему: Pokerstars вывод WMZ, etc на VISA 0% или SWIFT + Конверт USD/GBP,etc (net profit $0,5 млрд) (https://minfin.com.ua/blogs/94589307/115366/) Monobank - 50₴ на счет при рег. тут (https://clck.ru/DLX4r) | Номер SIP АТС Москва 7(495) - 0Ꝑ, 8(800) - 800Ꝑ/0Ꝑ (http://goo.gl/XOrCSn)
vlad11
На сайте с 11.01.2011
Offline
73
#6
Mage1:
Здравствуйте.

Имеется сервер с 12 Гб ОЗУ.

Обновитесь до 8.2 там много багов исправлено с ZFS

vlad11 добавил 11.01.2011 в 20:33

Andreyka:
Похоже что ZFS на фре существует для галочки, а в продакшене ее использовать нельзя...

Если не кормить троллей, то они сдохнут с голода. :)

Администрирование Linux и FreeBSD. Настройка BGP. (/ru/forum/744772)
Mage1
На сайте с 05.07.2007
Offline
83
#7
vlad11:
Обновитесь до 8.2 там много багов исправлено с ZFS

хм...до релиз кандидата? а по сравнению с 8.1 также исправлено?

vlad11
На сайте с 11.01.2011
Offline
73
#8
Mage1:
хм...до релиз кандидата? а по сравнению с 8.1 также исправлено?

да. После выхода 8.1 было найдено пару неприятных кернел-паников связанных с ZFS.

патч v28 ZFS пока не рекомендую ставить. пусть еще потестят.

Mage1
На сайте с 05.07.2007
Offline
83
#9
rtyug:
...много их и что за файлы?

файлы с текстом, мелкие, их более ста тысяч

rtyug:
может быть посмотреть скрипты, например, используется ли там буферизация при чтении файлов?
может быть использовать AIO (ассинхронный ввод/вывода)
так же может быть кэшировать дескрипторы открываемых файлов в скрипте...

вы описали методы как можно это дело ускорить без кеша zfs, которые я не хочу, но буду вынужден применять, если ничего не получится с кешем zfs, насколько я понял, он должен всё это делать прозрачно (и быстро), т.е. кешировать файлы в оперативке, а скрипты будут читать их используя обычные команды чтения с дисков.

rtyug:

файлы стоят в одном каталоге? может в ввиде кэша по каталогам их расставить...

по сотне каталогов раскиданы.

rtyug
На сайте с 13.05.2009
Offline
263
#10

все таки мало информации, я не знаю что это за система...

и может, что проблема не в этом :D

  • 11Гиг/50кб =~ 220к файлов
  • я не знаю, не смотрел как работает кэш в zfs... можно попробовать
  • про кэширование дискрипторов файлов: есть в nginx, вродебы скрипт не будет дергать ядро и фс все время как только будет чтение из файла
  • в MySQL спокойно можно хранить текст 50-70к
  • мне интересно, то как Вы размышляете, есть база 11Гиг, припустим пускай база будет 100-200Гб Oracle,
  • кстати, SUN разрабатывает новую ФС которая будет без ограничений и высокопроизводительная... написано, что инфорация о ней не доступна...
  • есть аналогичные распределенные ФС коммерческие и не коммерческий, например, MogileFS
12 3

Авторизуйтесь или зарегистрируйтесь, чтобы оставить комментарий