Redis - это (в основном) однопоточный процесс, что означает, что экземпляр сервера будет использовать одно ядро ЦП.
Процесс сервера сопоставляется с ядром операционной системой - это одиносновных задач, за которые отвечает ОС.Повторим еще раз: назначение ресурсов, включая ЦП, является решением ОС и очень сложным (то есть попробуйте прочитать код планировщика ядра;)).
Если у меня запущено 8 экземпляров redisна машине Debian / Ubuntu с 8 ядрами все они будут привязаны к ядру каждое.
Возможно, это зависит от усмотрения ОС.Нет гарантии, что каждый экземпляр получит уникальное ядро, и возможно, что одно ядро может использоваться несколькими экземплярами.
1) Что произойдет, если я уменьшу эту машину до 4 ядер?
Уменьшение, как это, означает перезапуск.После перезапуска серверов Redis ОС назначит их с доступными ядрами.
2) Изменения происходят автоматически (по умолчанию), или требуется какая-то явная конфигурация?
Никаких изменений не происходит - каждый процесс, Redis или нет, получает ядро.Ядра распределяются между процессами, а ОС управляет всем этим.
3) Есть ли способ контролировать поведение?Если да, то в какой степени?
Да, большинство операционных систем предоставляют интерфейсы для управления распределением ресурсов.В частности, команду taskset
Linux можно использовать для установки или получения соответствия процессорного процесса.
Примечание: вы должны оставить настройку привязки центрального процессора к ОС - она должна быть достаточно хорошей.Вместо этого убедитесь, что вы правильно подготовили свой сервер к нагрузке.