Меня интересует использование образов KVM на zvols под ZFS в Linux в многопроцессорной системе. Мне интересно, как мне закрепить узлы NUMA, чтобы максимизировать преимущества кеш-памяти ZFS ARC для всех изображений KVM в системе. Очевидно, я должен прикрепить каждую виртуальную машину к одному сокету / узлу, чтобы вся ее память находилась на одном контроллере. Но я озадачен тем, как настроить хост так, чтобы ARC приносил максимальную пользу каждой виртуальной машине.
Кажется логичным, что если я сохраню хост на одном узле NUMA, это будет означать, что виртуальные машины на другом узле будут иметь более медленный доступ к ARC. Однако, если хост распределен по узлам NUMA, его производительность пострадает, что может снизить производительность в гостевой системе.
Из того, что я прочитал, я даже не понимаю, может ли хост быть привязан к определенным узлам или по определению он использует их все. И если это так, то насколько ZFS на Linux ARC знает об узлах NUMA?
Привязка ресурсов / процессов к конкретным сокетам вручную - это то, что следует делать только в очень определенных обстоятельствах. Более того, сам ARC является глобальным ресурсом с (в основном) непредсказуемыми шаблонами доступа / обращениями.
Я настоятельно не рекомендую вам выполнять такую тонкую настройку, если только доказано, что он нужен за хорошую производительность. Попробуйте запустить установку Linux с настройками по умолчанию, вообще не связываясь с NUMA, и понаблюдайте за поведением вашей системы, используя numastat
Если требуется дополнительная настройка, попробуйте использовать автоматическую оптимизацию через numad
. Только и только если этого недостаточно, попробуйте оптимизировать с помощью numactl
и / или закрепление гостевого процессора KVM.