Плохая производительность сети от виртуальной машины KVM

Вы установили SAVEHIST=10000, но Вы уехали HISTSIZE в его значении по умолчанию 30. Это означает, что любая сессия сохранит самое большее 30 записей в памяти. Из-за append_history опция, файл истории может содержать больше истории, чем сохраненный в память. Если запись, которую Вы ищете, не будет в памяти, то это не будет найдено.

Легкая фиксация: набор SAVEHIST быть больше. Большую часть времени SAVEHIST и HISTSIZE должно быть то же значение.

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

Вы позволили бы сократить расход горючего из своих записей истории с hist_ignore_all_dups опция (вместо hist_find_no_dups).

2
24.03.2012, 04:31
2 ответа

Рассмотрите использование virtio. Это позволяет прямое подключение между VM, и хост без потребности эмулировать (замедляют) аппаратные средства. Я измерил высокие улучшения производительности сети с ним.

Например, можно включить virtio сетевое устройство kvm параметром командной строки "-сеть nic, model=virtio".

При использовании virtio блочных устройств обратите внимание на то, что новые имена устройств затем "vda1" и т.д., но это должно быть не проблемой, так как текущие дистрибутивы Linux обнаруживают разделы согласно своим UUID.

2
27.01.2020, 22:07
  • 1
    Ничего себе! Просто, ничего себе! Почему это не значение по умолчанию? Обратите внимание, что определение этой опции переопределяет значения по умолчанию, -net nic -net user. Не забудьте добавлять -net user после virtio опции. –  casualunixer 27.03.2012, 02:58

Это могла бы быть проблема Диска производительность ввода-вывода в госте. При использовании образа диска немного шагов применяются, чтобы иметь лучшую производительность:

Ели, необходимо будет играть вокруг с cache опция настройки дисков Вашего гостя.

По умолчанию, writethrough кэширование используется для всего блочного устройства. Это означает, что кэш страницы хоста будет использоваться, чтобы считать и записать данные, но уведомление о записи будет отправлено гостю только, когда о данных сообщили, как записано подсистемой внешней памяти.

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

Страницы хоста можно избежать полностью с cache=none. Это попытается сделать диск IO непосредственно к гостевой памяти. QEMU может все еще выполнить внутреннюю копию данных.

Некоторые драйверы блока работают плохо с cache=writethrough, прежде всего, qcow2. Если производительность более важна, чем правильность, cache=writeback должна использоваться с qcow2. По умолчанию, если никакое явное кэширование не будет указано для qcow2 образа диска, то cache=writeback будет использоваться. Для всех других типов диска cache=writethrough является значением по умолчанию.

Затем необходимо будет также играть вокруг с опцией лифта ядра: необходимо будет добавить elevator=noop в Вашей личинке командная строка Linux как это:

# Edit your /etc/default/grub.conf (on Debian-based distribution)
GRUB_CMDLINE_LINUX_DEFAULT="quiet splash elevator=noop"

Лучший explaination этого доступен в: http://lonesysadmin.net/2008/02/21/elevatornoop/; но в нескольких словах, хост ядро Linux и гость ядро Linux и пытается оптимизировать ввод-вывод, и это имеет тенденцию быть хуже, чем что-нибудь для гостя (гость должен оставить эту задачу хосту).

1
27.01.2020, 22:07

Теги

Похожие вопросы