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