SmartOS и zfs кеш.

VirtualBox, QEMU, ESX/ESXi и прочия
Правила форума
Убедительная просьба юзать теги [code] при оформлении листингов.
Сообщения не оформленные должным образом имеют все шансы быть незамеченными.
Аватара пользователя
Amadeus
ст. сержант
Сообщения: 331
Зарегистрирован: 2008-10-05 12:42:44
Откуда: Kiev

SmartOS и zfs кеш.

Непрочитанное сообщение Amadeus » 2015-07-15 1:12:59

Добрый вечер, сделаю тему тут, если не по адресу (в плане ее в раздел Sun надо было), перенесите, пожалуйста.

Есть такой, замечательный гипервизор, SmartOS.

Всем хорош, особенно для работы dev проектов, на маломощных машинах. Некоторые мои разрабы от, smf и startd, что заменило им возню с софтом аля supervisord, просто в восторге. Но не суть.

Он, как добросовестный форк солярки, используется естественно zfs, в коем есть такая штука как
zfs_arc

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

1) Создаем любую KVM либо OS машину (для проверки нагрузки на IO)
2) Например, если у нас FreeBSD делаем всего две операции:
- Выкачиваем порты
- Перебираем и устанавливаем мир
3) Получаем большую нагрузку на IO и, соответственно, большое значение zfs кеша в памяти (при условии что у нас нет дисков кеширующих в пуле)
В моем случае было где то 7,8/8 Гб RAM, так как дисков для кеша нет.

Соответственно, для гипервизора с жестким распределением ресурсов - это очень не есть хорошо. (Представим что там какая нибудь постгря еще до кучи стоит.)

И, соответственно, так как в дефолтном состоянии система грузится в память - возможность установки лимитов на эти параметры отсутствует. (В обычном Solaris это делается в /etc/system).

Ладно, пошел спросил в мейлинг листы насчет этой особенности. Из дельных ответов либо советуют пересобирать платформу, согласно патчам http://dtrace.org/blogs/wesolows/2013/12/28/anonymous-tracing-on-smartos/

Либо еще, например, вот такой
It is still not clear to me what problem it is you are experiencing other than the free memory counter getting smaller as a result of the system using unused RAM.


Да, действительно, что это я). Ну подумаешь memory leak, даже не явный, а вызванный работой другого сервиса. Все ок:)

Механизм освобождения кеша, так же не реализован, т.е если через vmadm виртуалка стопориться, весь кеш, который был "сделан" её UID остаётся в системе.(оставлял в состоянии покоя ОС на 24 ч)

За сим вопрос:
Случайно, никто не сталкивался с подобным поведением? Если да, то с какой стороны решали?
Момент с установкой ++ хардов в пул для кеша, я думаю, не есть продуктивный, так как при отсутствии механизма освобождения без перезагрузки полной хост машины - смысла 0. Так как не будешь же бутить хост машину.

Я, пока вижу, единственный адекватный вариант - это поставить хост на бут раздел, а не флешку, что бы получить полноценный доступ к /etc и ограничить в том числе и это.
Нет ничего невозможного

Аватара пользователя
Alex Keda
стреляли...
Сообщения: 34910
Зарегистрирован: 2004-10-18 14:25:19
Откуда: Made in USSR
Контактная информация:

SmartOS и zfs кеш.

Непрочитанное сообщение Alex Keda » 2015-07-17 16:51:22

Э.... А если под кэш харды отмонтировать и смонтировать заново?

Кастыли, конечно - но куда ж без них ;)
Убей их всех! Бог потом рассортирует...

Аватара пользователя
Amadeus
ст. сержант
Сообщения: 331
Зарегистрирован: 2008-10-05 12:42:44
Откуда: Kiev

SmartOS и zfs кеш.

Непрочитанное сообщение Amadeus » 2015-07-17 17:34:47

Это был бы вариант, не спорю, сделать что то типа

Код: Выделить всё

0   *    *   *   *      /script.py


в кроне

Но вся загвоздка в том. что вся системная часть гипервизора в памяти, и после ребута - все вернётся назад как было.

1) Возможность добавлять в grub методом

Код: Выделить всё

module /os/bootfs/etc/system type=file name=etc/system
они толе закрыли, толи оно никогда нормально не работало., так как при попытке таким образом загрузиться - начинает ругаться на ASCII символы, а после того как специально пройдешься по файлу tr'ом, эта ругань остается

Ставить в бут раздел, тоже, не самый оптимальный вариант.

Я рассматриваю ситуацию, когда дисков для кеша, вообще нет, т.е гипервизор развернут на, каком нибудь бюджетном сервере в ДЦ. и только 2 в зеркале.

В мейлинг листах мы пока сошлись на том, что принцип работы zfs_arc такой, что он должен отдать нужное кол-во памяти, при запросе другого апп. Это был ответ одного сотрудника Joyent.

Сейчас гоняю стресс тесты, с целью забить озу в 0, и посмотреть как будет высвобождаться память при объемных запросах. Если это соответствует действительности - ну ок, хотя лично мне такая логика не понята.

- Мы забили рюкзак доверху яблоками, когда собирали,
- На компот мы отдали 10 штук
- Остальные остались лежать в рюкзаке
- И дальше пошли собирать уже другие яблоки, с остатком прежних, вместо того что бы выложить сразу.
Нет ничего невозможного

Аватара пользователя
Amadeus
ст. сержант
Сообщения: 331
Зарегистрирован: 2008-10-05 12:42:44
Откуда: Kiev

SmartOS и zfs кеш.

Непрочитанное сообщение Amadeus » 2015-07-17 21:43:05

Воoбщем, 2 + 2 действительно получилось 4:) И это, хорошо, так как гипервизор, громе этого момента нареканий у меня никогда не вызвал.
Просто оставлю тут результаты эксперимента, глядишь кому то понадобится, так как русскоязычной документации по системе, считайте нет.

Имеем:
Забитую почти в 0 ram.

Код: Выделить всё

Memory: 8161M phys mem, 235M free mem, 8161M total swap, 8161M free swap


Из них

Код: Выделить всё

[root@f8-db-88-fe-03-6a /opt/zones.config]# echo ::memstat | mdb -k
Page Summary                Pages                MB  %Tot
------------     ----------------  ----------------  ----
Kernel                     319640              1248   15%
[b]ZFS File Data             1304378              5095   62%[/b]
Anon                       317397              1239   15%
Exec and libs                4513                17    0%
Page cache                  17579                68    1%
Free (cachelist)            21931                85    1%
Free (freelist)            101687               397    5%

Total                     2087125              8152
Physical                  2087124              8152


Выделенное, интересующий пункт.

И одну запущенную виртуалку.

Код: Выделить всё

[root@f8-db-88-fe-03-6a /opt/zones.config]# vmadm list
UUID                                  TYPE  RAM      STATE             ALIAS
34edb39b-40c0-4e04-8a8b-cd21db5a49c3  KVM   1024     running           devgw


Создаем:
Еще одну виртуальную машину, с дефолтными параметрами для KVM т.е не устанавливаем
ни

Код: Выделить всё

 max_physical_memory

ни

Код: Выделить всё

 max_locked_memory


просто обычный ram

Код: Выделить всё

  "ram": "1024",
  "default_gateway": "10.0.0.1",
  "vcpus": "1",



Стартуем вторую виртуалку, получаем:

Код: Выделить всё

Memory: 8161M phys mem, 214M free mem, 8161M total swap, 8118M free swap


Т.е count свободного места в оперативке не изменился, при этом

Код: Выделить всё

[root@f8-db-88-fe-03-6a /opt/zones.config]# echo ::memstat | mdb -k
Page Summary                Pages                MB  %Tot
------------     ----------------  ----------------  ----
Kernel                     302401              1181   14%
ZFS File Data             1080197              4219   52%
Anon                       576437              2251   28%
Exec and libs                1211                 4    0%
Page cache                   5124                20    0%
Free (cachelist)            24372                95    1%
Free (freelist)             97383               380    5%

Total                     2087125              8152
Physical                  2087124              8152


Т.е минус гиг из кеша ушел на нужды системы. Отработало как надо. Ну и, соответственно, запустился второй процесс

Код: Выделить всё

[root@f8-db-88-fe-03-6a /opt/zones.config]# ps ax | grep qemu
 10609 ?        S 186:04 /smartdc/bin/qemu-system-x86_64 -m 1024 -name 34edb39b-
 11965 ?        S  1:04 /smartdc/bin/qemu-system-x86_64 -m 1024 -name 6a85df18-



Т.е из этого делаем общий вывод, что бы потом не было вопросов, из разряда - а почему так произошло, и какой то кастомной аплекухе не хватило памяти, на всякий случай в спеках к виртуалкам надо обязательно указывать
max_physical_memory:
max_swap:

Оно более актуально для KVM (так как там расчет максимальной памяти на виртуалку ram + 1024), но лучше это юзать и для стандартных зон солярки.
Нет ничего невозможного

Аватара пользователя
skeletor
майор
Сообщения: 2370
Зарегистрирован: 2007-11-16 18:22:04
Откуда: Kiev
Контактная информация:

SmartOS и zfs кеш.

Непрочитанное сообщение skeletor » 2015-08-07 14:50:03

У меня Solaris и я просто ограничиваю zfs_arc_cache в 11.1
"Винда съела дрова и резет здесь не фурычит."
"Все говорят, что у меня /dev/hands криво и я всё делаю через /dev/ass. А у меня этих фалов вообще нет!"

Аватара пользователя
Amadeus
ст. сержант
Сообщения: 331
Зарегистрирован: 2008-10-05 12:42:44
Откуда: Kiev

SmartOS и zfs кеш.

Непрочитанное сообщение Amadeus » 2015-08-07 16:02:13

skeletor писал(а):У меня Solaris и я просто ограничиваю zfs_arc_cache в 11.1


А у меня в квартире газ:)

Речь идет не про Solaris.
Нет ничего невозможного


Вернуться в «Виртуализация»

Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей и 2 гостя