Redis Виртуальная память в 2.6 - PullRequest
3 голосов
/ 09 февраля 2012

Чтение документации Redis о виртуальной памяти по адресу: http://redis.io/topics/virtual-memory

Что касается «vm-max-threads», они говорят: «Это максимальное количество потоков, используемых для выполнения ввода-вывода из/ к файлу подкачки. Хорошее значение - это просто соответствовать количеству ядер в вашей системе. "

Я не понимаю, почему это должно соответствовать количеству ядер, как я понимаю после того, как поиск сделан длячто-то в свопе redis, тогда это делегируется одному из этих потоков, однако они, вероятно, сразу же перейдут в некоторую стадию ожидания приостановленного ввода-вывода после вызова вызова чтения файла, позволяющего ЦП выполнять другую работу?

1 Ответ

3 голосов
/ 09 февраля 2012

Redis VM уже устарела в Redis 2.4 и была удалена в Redis 2.6. Это тупик: не используйте его.

Использование количества ядер для vm-max-threads было только практическим правилом. Как вы указали, эти потоки будут либо ожидать выполнения какой-либо работы, либо ожидать завершения синхронного ввода-вывода. Кроме того, эти потоки создаются динамически.

Правильное значение на самом деле зависит от того, как распараллелить ввод / вывод, а не от чистого потребления ЦП этими потоками. Если файл подкачки распределяется по массиву дисков SSD, тогда имеет смысл использовать больше потоков (возможно, больше, чем количество ядер ЦП). Если ваш файл подкачки находится на одном вращающемся диске, то это не так. Но из-за кэша файловой системы некоторые операции ввода-вывода будут поддерживаться логическими (и, следовательно, не будут генерировать физические состояния ожидания), поэтому выбор хотя бы количества ядер является хорошим выбором общего назначения.

...