Anonymous
13:48 < nhm_> WildyLion: ok, ok.. ;) one of the ones to teawk right nowis bluestore_cache_size 13:48 < nhm_> WildyLion: If you lower it, you might want to increase the cache_meta_ratio to help compensate 13:49 < nhm_> WildyLion: also, in rocksdb, decreasing the write_buffer_size, and maybe the write_buffer_number will probably lower rocksdb memory usage, but will likely hurt performance on fast disks.
Anonymous
как минимум
Anonymous
10:51 < WildyLion> guys, can anybody enlighten me what are the reasonable values for bluestore_cache_size and rocksdb_cache_size for a 2TB spinning disk OSD? nhm ? 10:52 < WildyLion> we were still seeing our OSD spike in mem consumption after a backfill 10:52 < WildyLion> but now i've set mon_rocksdb_options = write_buffer_size=33554432,compression=kNoCompression 10:52 < WildyLion> so we'll see
Anonymous
хм, почему кстати mon_rocksdb_options
Anonymous
я завтра посмотрю, по идее это только к мониторам и относится
Anonymous
и это касалось другой проблемы
Mark ☢️
https://work.techtonium.com/bitbucket/users/aaron/repos/ceph/commits/bcf20a1ca12ac0a7d4bd51e0beeda2877b4e0125
Anonymous
вот с ..._cache_meta_ratio я не экспериментировал, завтра можно погонять
Mark ☢️
Большой дефолт
Mark ☢️
Про кеш сайз
Anonymous
а, ну гиг да, вероятно что вместе с RocksDB и всем остальным - OSDшки прочно вылезали за 2ГБ RSS
Mark ☢️
db->set_cache_size(cct->_conf->bluestore_cache_size * cache_kv_ratio)
Mark ☢️
Нашел в сырцах
Mark ☢️
Блин. А оно 0.2
Mark ☢️
А я думал мож 4. Типа от того и беда
Mark ☢️
))
Mark ☢️
https://github.com/ceph/ceph/pull/15799
Mark ☢️
Кто то этого тут сильно хотел. И вот.
Anonymous
а кстати зачем, если в qemu и так есть тротлинг?
Anonymous
хотя да, для не-qemu полезно
Anonymous
но опять же... эм, есть же cgroup, blkio
Anonymous
и это даже в тикете написано
Mark ☢️
Да. Оба кейса.
Mark ☢️
Но есть случаи когда мотороллер не твой
Mark ☢️
А кластер твой
Artem
По поводу pagecache'а - ну если не предполагать что блустор лучше кеширует (в чем я сомневаюсь) то можно предположить что очень был нужен o_direct
Anonymous
а, стоп
Anonymous
там еще что-то связанное с атомарностью записи в BS
Anonymous
но по-моему это не в ту степь, это по поводу "почему архитектура именно такая"
Unsupported
Погодите, а пейджкеш не к vfs ли относится?
Unsupported
Блустор с блочным устройством работает,та не с ФС
Unsupported
Или я гон
Anonymous
да, с блочным. Блин, я туплю конкретно - у нас же нет механизма работы pagecache'а с блочным устройством
Anonymous
а почему блюстор не юзает FS - см. про то, что O_ATOMIC не включили в ядро, btrfs оказалась слишком ненадежной, ну соответственно они решили написать простейший fs-alike и назвали его bluefs
Anonymous
емнип так
Unsupported
Емнип, да
Unsupported
Про разговор о потребленной памяти на осд: без указания кэша в 512мб осд и за 4гб вылазил, а с этой настройкой - до 2гб не дотчгивает
Unsupported
Какой там дефолт?
Anonymous
что удивительно, дефолт bluestore_cache_size = 1024^3
Anonymous
т.е. гиг
Anonymous
Марк выше показывал кусок хидера, где это прописано
Unsupported
Может ты ещё что-то накручивал?
Anonymous
нет, остальное имело отношение уже к мониторам. Давай наверное до завтра, а завтра доказаетльно проверим, что влияет. Потому что я тоже не понимаю, как может быть 4GB RSS, если это не баг
Artem
виктор, юрий, насчёт блочных устройств и пейджкэша: root@host:~# dd if=/dev/sda of=/dev/null bs=1024000 count=1000 1000+0 records in 1000+0 records out 1024000000 bytes (1.0 GB) copied, 9.54779 s, 107 MB/s повторим-с root@host:~# dd if=/dev/sda of=/dev/null bs=1024000 count=1000 1000+0 records in 1000+0 records out 1024000000 bytes (1.0 GB) copied, 0.219861 s, 4.7 GB/s чем объясните? ;)) с блочным устройством можно работать как с обычным файлом и с pagecache'ом там всё ок. Нюанс только в том, что если вы вдруг захотите сделать fsync на какой-то блок данных (а если вы хотите гарантированной записи то вы захотите, я надеюсь ;) ) то fsync будет сделан на весь файловый дескриптор == "файл блочного устройства" == блочное устройство целиком. Ну и это некомильфо, конечно. Отсюда наверняка и растёт желание использовать O_DIRECT ценой ухода от pagecache'а
Mark ☢️
http://man7.org/linux/man-pages/man2/sync_file_range.2.html
Mark ☢️
https://www.quora.com/What-is-the-difference-between-Buffers-and-Cached-columns-in-proc-meminfo-output
Mark ☢️
Это нащот почему dd закешилось
Mark ☢️
Buffers is raw disk blocks not represented in the page cache
Mark ☢️
https://www.usenix.org/legacy/event/usenix2000/freenix/full_papers/silvers/silvers_html/
Mark ☢️
sync_file_range() appeared on Linux in kernel 2.6.17.
Mark ☢️
Осень 2007
Mark ☢️
А еще O_direct этр не эквивалент фсинкной операции. Надо еще кеш самого диска профлушить
Artem
Buffers is raw disk blocks not represented in the page cache
Я могу ошибаться, конечно, но Buffers и PageCache лежат и управляются одинаково сейчас, поэтому разделять их особо смысла нет(только с т.з. научного интереса, как закэшировался блок данных).
J
Привет! Ребята, у меня готовится пачка серверов которые будут цепляться к кластеру. Взялся тестировать диски и не пойму почему такие странные результаты. Для начала: Серверы: Supermicro 5018D8-AR12L RAID контроллер там есть (LSI 2116), но он часть системы на чипе и никакого кэширования или управления виртуальными томами не делает. Все диски видны в системе как есть. Диски: Hitachi Ultrastar 7k6000 по 4Тб (HGST HUS726040ALE614) Использую fio чтобы посмотреть как они вообще себя будут вести если журналы размещать на них же: fio —filename=/dev/sda —direct=1 —sync=1 —rw=randwrite —bs=4k —numjobs=1 —iodepth=1 —runtime=60 —time_based —group_reporting —name=4krandw hdparm -W 0 /dev/sda 4krandw: (groupid=0, jobs=1): err= 0: pid=6368: Thu Jun 22 07:36:44 2017 write: io=63548KB, bw=1059.9KB/s, iops=264, runt= 60003msec clat (usec): min=473, max=101906, avg=3768.57, stdev=11923.02 hdparm -W 1 /dev/sda 4krandw: (groupid=0, jobs=1): err= 0: pid=6396: Thu Jun 22 07:39:14 2017 write: io=23264KB, bw=397005B/s, iops=96, runt= 60005msec clat (msec): min=1, max=48, avg=10.30, stdev= 4.12 Выходит что с выключенным дисковым кэшем результаты выглядят лучше: Commit latency в среднем ниже (хотя что-то очень сильно гуляет) и, соответственно, iops гораздо выше. Видимо, я чего-то недопонимаю? Возможно, так контроллер диска работает с кэшем? Буду благодарен если поможете объяснить.
Denis
-W 1 включает же. и Видно что с включенным clat ниже. что не так ?
J
Ну как, меня смущает что с выключенным кэшем средний clat ниже и иопсов больше выходит.
Denis
-W 0 avg=3768.57 -W 1 avg=10.30
J
в первом случае в микросекундах.
J
>clat (usec)
Denis
а лол
Denis
да, сорян
Mark ☢️
Мне кажется, такой тест не очень практичен для тестирования дисков для цефа. Если рассматривать filestore по крайней мере, то осд флушит КАЖДЫЙ запрос только в журнале. А в журнале там запись последовательная, да и вобще, журнал на ссд обычно. А при записи на XFS он синк делает время от времени — в результате чего под синк попадает несколько предшествующих врайтов одновременно, что даёт винту сделать это более оптимально, т.е. быстрее.
Mark ☢️
поэтому --sync надо убрать
Mark ☢️
и ещё энджин (под центосом!) в fio сильно влияет на результат
J
Мне кажется, такой тест не очень практичен для тестирования дисков для цефа. Если рассматривать filestore по крайней мере, то осд флушит КАЖДЫЙ запрос только в журнале. А в журнале там запись последовательная, да и вобще, журнал на ссд обычно. А при записи на XFS он синк делает время от времени — в результате чего под синк попадает несколько предшествующих врайтов одновременно, что даёт винту сделать это более оптимально, т.е. быстрее.
Ну так я же и написал что всерьез думаю о том чтобы размещать журнал в разделе в начале диска, а все остальное отдавать под filestore. С последовательной записью та же история, кстати. Без кэша - получше. Пробовал вместо стандартного sync движка libaio. С ним картина та же. Меня пока интересует сырая производительность дисков чтобы потом уже решить что и как с ними делать лучше. И вот когда увидел что с выключенным кэшем результаты лучше, тут у меня уже начало зудеть. Хочется какое-то объяснение получить)
Mark ☢️
Журнал точно надо на ссд выносить
Mark ☢️
иначе будет печалька
Mark ☢️
в плане иопсов
J
Не будет особо никакой печальки) Дисков то много и иопсы не приоритет.
J
Зато так я смогу осд если что взять и спокойно в другой сервер переткнуть и запустить за две минуты.
Mark ☢️
Mark ☢️
или как там это делается
J
тогда зачем бенчишь
Затем чтобы знать сколько ожидать от этих серверов и потом написать подходящие правила в CRUSH карту, чтобы хранить не особо горячие данные. Зная сколько иопсов\линейной записи можно выжать я смогу планировать какие пулы размещать на этих железяках. а какие - нет.
Dimonyga
Не будет особо никакой печальки) Дисков то много и иопсы не приоритет.
а вот тут ты немного не прав. парралельные джобы - да, а одна ВМ - у нее скорость будет как у обычного диска, точнее медленнее в 2 раза чем обычный диск
J
а вот тут ты немного не прав. парралельные джобы - да, а одна ВМ - у нее скорость будет как у обычного диска, точнее медленнее в 2 раза чем обычный диск
Хеширование же происходит для каждого объекта, не факт что соседние объекты смапятся в одни и те же PG.
J
Или я снова чо-то не понимаю)