Привет всем!
Итак имеем проблему.
Дано:
1. файловый сервер на самбе.
2. Скорость чтения с него больших файлов на "хост" - порядка 13-17 мегабайт в секунду.
3. На "хосту" поднят VirtalBox 4.0.
4. В этом VB поднят терминальный сервер, в котором живут юзеры.
5. Собственно проблема. Периодически, то есть скорее даже систематически, скорость доступа из VB к тем же самым данным падает до крайне неприличного уровня, до 500-600 килобайт в секунду. При этом глубоко фиолетово, как юзер (я, например) заходит на терминальный сервер. Что графическим RX, что через ssh. Эффект одинаков.
При этом, top говорит однозначно, что терминальный сервер простаивает на 90 (в среднем) процентов, и что ожидание операций чтения-записи не больше 2-3%. Кроме этого - скорость доступа к тому же файлсерверу что с "хоста", что с иных сетевых компьютеров правильная, меньше 10 мегабит по чтению/записи не опускается. "Хост" тоже не сильно утруждает себя работой.
Спинным мозгом чую, что собака зарылась в сетевых интерфейсах VB. Но вот как поднять их производительность???? Или я заблуждаюсь?
Сетевые настройки в гостевой оси (RFR-14) дефолтные, не оптимизировал их никак... Что интерфейсов сетевых, что самбового клиента. Куда копнуть?
Производительность сетевых интефейсов (+)
ifconfig покажи, там есть значения как error так и drop вот тогда и будем смотреть что и как =)
ifconfig покажи, там есть значения как error так и drop вот тогда и будем смотреть что и как =)
# ifconfig
Показать
eth0 Link encap:Ethernet HWaddr 08:00:27:93:E7:12
inet addr:192.168.43.99 Bcast:192.168.43.255 Mask:255.255.255.0
UP BROADCAST RUNNING MULTICAST MTU:1472 Metric:1
RX packets:33115441 errors:0 dropped:0 overruns:0 frame:0
TX packets:28904016 errors:0 dropped:0 overruns:0 carrier:0
collisions:0 txqueuelen:1000
RX bytes:2422893599 (2.2 GiB) TX bytes:890129742 (848.8 MiB)
eth1 Link encap:Ethernet HWaddr 08:00:27:93:E7:13
inet addr:192.168.41.99 Bcast:192.168.41.255 Mask:255.255.255.0
UP BROADCAST RUNNING MULTICAST MTU:1500 Metric:1
RX packets:399777 errors:0 dropped:0 overruns:0 frame:0
TX packets:64808 errors:0 dropped:0 overruns:0 carrier:0
collisions:0 txqueuelen:1000
RX bytes:89246145 (85.1 MiB) TX bytes:15054615 (14.3 MiB)
lo Link encap:Local Loopback
inet addr:127.0.0.1 Mask:255.0.0.0
UP LOOPBACK RUNNING MTU:16436 Metric:1
RX packets:5039534 errors:0 dropped:0 overruns:0 frame:0
TX packets:5039534 errors:0 dropped:0 overruns:0 carrier:0
collisions:0 txqueuelen:0
RX bytes:1050172799 (1001.5 MiB) TX bytes:1050172799 (1001.5 MiB)
Значения есть, равны нулю... То есть внешне - всё идеально. А вот унутре...
Самое мерзкое то, что на том же сервере (хосту), в том же VB развернута WinXP с тем же набором сетевых интерфейсов от VB (интеловские гигабитки) и там замедления нет. Скорость обмена с сетью в гостевой XP та же, что и на хосту. А вот терминальный сервер - деградирует... Вычитал, что в интеловских дровах по дефолту включен gro, отключил его через ethtool -K ... gro off, но это не помогло ни разу. Что то еще держит. Читал так же, что VB ограничивает пропускную способность гостя в 150-200 мегабит, но мне и на эту то скорость не выйти... Попробую вечером поменять "сетевые платы" виртуалбокса, тоже была рекомендация...
Кстати, вопрос - видел слово о том, что Citrix XenServer полощет сеть и на весь гигабит без ограничения... Но... По описанию - это не пакет, который можно инсталлировать на любой свой действующий сервер. Это полноценный сервер с полной инсталяцией своей оси. Или я неправ?
Может проще будет мигрировать на kvm? Там можно поставить в качестве сетевого интерфейса VirtiO и производительность очень высокая.
Может проще будет мигрировать на kvm? Там можно поставить в качестве сетевого интерфейса VirtiO и производительность очень высокая.
Мигрировать именно сложно. Так как на этом хосту живут еще несколько VB-гостей. Почтовый сервер, ATC, WinXP. И перекинуть их, собственно, некуда. А работать они должны. Нашел, правда одну статью, как научить работать kvm и VB на одном хосту... Надо попробовать будет. Может и выйдет что путного...
Может проще будет мигрировать на kvm? Там можно поставить в качестве сетевого интерфейса VirtiO и производительность очень высокая.
Скорость дисков оставляет желать лучшего, проверял в Debian. Тут VirtualBox выигрывает.
Скорость дисков оставляет желать лучшего, проверял в Debian. Тут VirtualBox выигрывает.
В моей виртуальной среде скорость дисков - дело десятое. Так как все данные вынесены на сеть. А в самой виртуалке - только ось и нужные для ремутного доступа приложения. Так что для меня - в первую очередь критична скорость работы с сетью. И вот тут-то грабля и разлеглась.
Кстати, хост под VB у меня под RFR13 работает. Так что VB там версии 4.0. А 4.1 не поставить (без перехода на Fedora-14, минимум). Так вот, в VB 4.0 можно назначить сетевой интерфейс как платой, так и Virtio-Net. Почитал я про этот virtio... Попробовал поставить. Вместо улучшения - получил существенное ухудшение. Если на интелевской плате скорость чтения толстого файла с самбы сейчас (когда нет никого) порядка 10 мегабайт/c, то на драйвере Virtio - меньше мегабита. Что надо под это дело подстраивать в гостевой Федоре я, пока, не нашел... Если кто знает, подскажите...
В принципе - скорость в 10 мегабайт/с это практически предел для 100 (или чуть больше) мегабитной сетки. А я читал, что VirtualBox дает именно по 100-150 мегабит на интерфейс каждой виртуальной машины. By design. И до имеющегося гигабита из VB не допрыгнуть.
Непонятно только, почему в VB скорость сети в течение рабочего дня падает с 10 мегабайт до половинки мегабайта...
А с vde2 коробка может? Мое мнение из виртуализации сетей самое серьезное.
... погуглил вроде может.
Попробуйте в настройках гостя поставить виртуальный сетевой адаптер.
Скорость дисков оставляет желать лучшего, проверял в Debian. Тут VirtualBox выигрывает.
Даже с Virtio драйвером контроллера жесткого диска?
Непонятно только, почему в VB скорость сети в течение рабочего дня падает с 10 мегабайт до половинки мегабайта...
Может нужно поиграть со значениями MTU? Пакеты фрагментируются
Может нужно поиграть со значениями MTU? Пакеты фрагментируются
Нет причин для фрагментации. Терминальный (проблемный) сервер и файловый сервер сидят в одной ЛВС. И с одинаковым MTU. Так шта...
Попробуйте в настройках гостя поставить виртуальный сетевой адаптер.
Именно это я и делал. Скорость чтения из самбы при драйвере Intel < Номер не помню > MT Desktop порядка 10-11 мегабайт в секунду (по показаниям mc) когда я один с терминалом работаю. Сейчас сидит в терминале человек 5 и скорость чнения - 5-6 мегабайт (после тюнинга TCP стека гостя и хоста). Сам хост читает с самбы то же самое со скоростью 14-16 мегабайт в секунду.
Если ставить гостю драйвер Virtio-NET - то скорость чтения гостя падает на порядок. Хорошо если до мегабайта раскачается. Что то надо внутри самой виртуальной машины, у гостя, править. А вот что именно - понять не могу. Все гугление сводится к поддержке Virtio в оффтопике. Или как активизировать его в KVM. А у меня VB... Глупый "yum search virtio" на эту тему тоже промолчал.
Если ставите Virtio тогда необходимо и в госте установить драйвера для Virtio.
Пробуйте
http://sourceforge.net/projects/kvm/files/kvm-guest-drivers-windows/2/
Если ставите Virtio тогда необходимо и в госте установить драйвера для Virtio.
Пробуйте
http://sourceforge.net/projects/kvm/files/kvm-guest-drivers-windows/2/
http://alt.fedoraproject.org/pub/alt/virtio-win/latest/images/bin/ или вот это
Можно еще поставить сетевую карту реальную и пробросить ее в виртуальную машину smile
[quote=Kettler]Если ставите Virtio тогда необходимо и в госте установить драйвера для Virtio.
Пробуйте
http://sourceforge.net/projects/kvm/files/kvm-guest-drivers-windows/2/
http://alt.fedoraproject.org/pub/alt/virtio-win/latest/images/bin/ или вот это[/quote]
лучше это... сильно новее
лучше это... сильно новее
Я, наверное недостаточно четко описал конфигурацию. Госетвая ось - RFR-14. А драйвера эти - под windows. Я не спрою, что сильно новее. Но как??? Как заюзать их под Федорой?
а при чем тут федора, если дрова нужны для винды?
virtio в ядре, дрова отдельные не нужны под линукс...
но дрова нужны для гостевых систем