LINUX.ORG.RU

Постоянное зависание Virtualbox при использовании KTorrent

 , , , ,


0

1

KTorrent, запущенный в Virtualbox, постоянно вешает ВМ. На хосте такого никогда не было, зато в виртуалке он себя ведет неадекватно. Как бы определить в чем проблема?

Запускаю KTorrent, и в течении 20-30 минут все виснет.

1. Сначала выделил больше памяти виртуалке (с 2 до 4 гб) - не помогло.

2. Потом открыл системный монитор, посмотрел что дело вообще не в памяти. Она расходовалась слабо, а файл подкачки вообще не использовался. Всего 1-1.5 гб памяти из 4х. В момент зависания CPU поднимается до 100%, хотя первые 10-15 минут прыгает в диапазоне 10-40%. Потом перестаешь следить, в какой-то момент смотришь - интерфейс не отвечает, лампочка hdd постоянно светится, и 100% загрузки CPU.

3. Выделил 2 ядра для виртуалки - не помогает. В какой-то момент оба ядра под 100% и зависание.

4. Выделил 4 ядра - и все-равно не помогло.

В последний раз открыл обе вкладки системного монитора, чтобы видеть что происходит в момент зависания, а произошло вот что.

https://i.imgur.com/sUzm1RQ.png

- Почти 100% все 4 ядра CPU (общая загрузка на 85%).

- Полностью забит файл подкачки - и это при минимальном использовании оперативки.

- Многие процессы перешли в статус «в ожидании на диске».

Пока даже не знаю с чего начать.

1. Может ли это быть проблемой работы процессора в Virtualbox? Может каких-то функций надо подключить в настройках машины? Их там немного, есть какой-то PAE/NX (отключен). Влияет ли это на что-то?

2. Может ли это быть проблемой KTorrent? Какие опции в программе могут на что-то влиять?

3. Почему используется своп, если еще дофига свободной оперативки? Может ли быть зависание из-за переполнения свопа? Конечно сомнительно, чтобы это было так дебильно реализовано в Linux, но все же...

Ответ на: комментарий от InInteractive

Нужно отключить COW для каталога с виртуалками.

Где и как это сделать?

И желательно использавать фиксированный диск, тогда тормозит меньше

Всегда делаю фиксированный при создании виртуалки.

Maniac_with_a_saw ()
Ответ на: комментарий от XMs

Запусти в виртуалке iotop и посмотри, кто хард насилует

Запустил. Пока все очень тихо и редко переваливает за 1%. После зависания залью скриншот.

Маленькая заметка - скорость закачки низкая (2 мбит/с), а отдачи нет (отключена), если это важно.

Maniac_with_a_saw ()
Ответ на: комментарий от XMs

Запусти в виртуалке iotop и посмотри, кто хард насилует

Готово, сделал 5 скриншотов разных стадий.

1. Начало запуска Ktorrent - пока все чисто.

https://i.imgur.com/SmqDDdY.png

2. Через 5 минут файл подкачки немного вырос. После этого своп начал толстеть все быстрее с каждой минутой.

https://i.imgur.com/hRrpMoE.png

3. Еще через 2 минуты своп занимал 1/3 от своего объема.

https://i.imgur.com/6cctrhD.png

4. Еще через 5 минут своп заполнился и начались предсмертные лаги.

https://i.imgur.com/VniDzLX.png

5. Спустя 10 секунд - окончательное зависание.

https://i.imgur.com/rdCTPxA.png

Maniac_with_a_saw ()

Причем, как видно из скринов, пока своп толстеет - iotop ничего интересного не показывает, а как заполняется полностью, то сразу много разных процессов загружает систему. Непонятно, ктож виноват то.

Maniac_with_a_saw ()
Ответ на: комментарий от InInteractive

В торрент клиенах есть пункт резервитовать все месть сразу. Может поможет.

В KTorrent 2 похожих опции.

Зарезервировать свободное место перед началом загрузки

Полностью зарезервировать место на диске (для избежания фрагментирования)

Причем первая и так была включена, а вторую включил только щас, но своп все-равно довольно быстро забивается. Так что нет, видимо это не влияет.

Первые 5 минут ничего не происходит, но потом начинается активное засерание свопа... и через 10 минут зависание.

Maniac_with_a_saw ()
Ответ на: комментарий от InInteractive

Нужно отключить COW для каталога с виртуалками.

Это надо в основной или гостевой системе сделать?

для btrfs както так отключается

chattr +C /path/to/folder

А в kubuntu вроде не btrfs, не знаю что там.

Maniac_with_a_saw ()
Ответ на: комментарий от Maniac_with_a_saw

кэширование ввода-вывода для sata-контроллера

Причем метод с кэшированием в настройках Virtualbox дает не совсем тот же эффект - после полного забивания свопа начинаются лаги, но вместо полного зависания системы KTorrent автоматически закрывается. Интересно, кто посылает сигнал на завершение его процесса, как это работает.

В любом случае, метод не подходит, процесс закачки прекращается, своп освобождается где-то на 100 мб, т.е. остается на планке 1900 из 2000 мб, и дальше запускать бессмысленно.

Maniac_with_a_saw ()
Ответ на: комментарий от anonymous

sudo nano /etc/sysctl.conf

vm.swappiness=10

Начинаю пробовать этот метод.

Вообще, прочитал про него немного:

The Linux kernel provides a tweakable setting that controls how often the swap file is used, called swappiness.

A swappiness setting of zero means that the disk will be avoided unless absolutely necessary (you run out of memory), while a swappiness setting of 100 means that programs will be swapped to disk almost instantly.

Ubuntu system comes with a default of 60, meaning that the swap file will be used fairly often if the memory usage is around half of my RAM. You can check your own system's swappiness value by running:

Все это очень странно.

1. Во-первых, где проверить, что в Ubuntu действительно стоит значение 60? В моей виртуалке 4 гб памяти, а используется всего 1. Это явно не 60%, чтобы постоянно забивать своп.

2. Во-вторых, в самом файле /etc/sysctl.conf этой строчки нет. Понятно, что надо добавить, но где найти изначальное вот это значение «60» - где оно прописано системой? Почему оно не работает, если оно действительно 60?

Maniac_with_a_saw ()

Я не понимаю как это работает. Оно просто игнорит все эти значения. После того, как я выставил своп на 10, оно все-равно заполняется, хотя оперативка не вылазит за пределы 1 гб, т.е. 25% (и это с настроенным порогом в 90%). Надо отключить своп вообще.

Maniac_with_a_saw ()
Ответ на: комментарий от Woolf

Вряд ли мне хватит знаний и квалификации это найти. Тем более, если это мейнстримовая система (ubuntu), и она так себя ведет, то наверно разработчики об этом знают, но почему-то не хотят исправлять. Я же не первый человек, который запускает торренты в виртуалке и меняет своп. Возможно, стоит отправить багрепорт. Может они не тестировали торренты под виртуалкой?

Maniac_with_a_saw ()
Ответ на: комментарий от Maniac_with_a_saw

Я же не первый человек, который запускает торренты в виртуалке

Может и не первый, но не жирнокде софт же запускать. Можно вообще в консоли качать и по web интерфейсу заходить.

anonymous ()
Ответ на: комментарий от anonymous

Может и не первый, но не жирнокде софт же запускать. Можно вообще в консоли качать и по web интерфейсу заходить.

А сам ты не жирный? На скриншоты смотрел? 800 мб для системы с жирнющими торрентами - это много?

Maniac_with_a_saw ()
Ответ на: комментарий от Maniac_with_a_saw

Два момента:

  1. Убедись, что на хосте достаточно оперативки (на всякий случай) и посмотри, как она заполняется при работе гостя;
  2. Отсортируй процессы по потреблению памяти
XMs ★★★★★ ()
Ответ на: комментарий от XMs

Убедись, что на хосте достаточно оперативки (на всякий случай) и посмотри, как она заполняется при работе гостя;

Ее там просто дофига. И если смотреть из хоста, то Virtualbox весь занимает около 100 мб.

Отсортируй процессы по потреблению памяти

А этим я занимался еще вчера. Смысла немного, т.к. системный монитор сам переодически выводит наверх самые жирные процессы. Вобщем все как на скриншотах, самый жирный все-равно KTorrent, который за пределы 300-400 мб не выходил.

Maniac_with_a_saw ()
Ответ на: комментарий от Maniac_with_a_saw

А оперативку потестить не пробовал? Запусти memtest на ночь, чтобы убедиться, что ничего не сбоит. И перед этим можешь вывести в терминале tail -f /var/log/kern.log (не помню, как он в убунте называется, в общем, dmesg в файле), поискать подозрительные сообщения. Как на хосте, так и в госте

XMs ★★★★★ ()
Ответ на: комментарий от InInteractive

Может быть, вполне может быть. В выходные поставлю. Пока много торрентов завязано на KTorrent, и возиться с переносом не хочется. Завтра все докачается, и новые торренты протестирую на qBittorent.

А пока просто отключаю своп. Но даже если это поможет, потом поставлю qBittorent, верну своп обратно на стандартный 60, интересно посмотреть на результат. Хочется все же какой-то вывод сделать, кто виноват, и что за косяк.

Maniac_with_a_saw ()
Ответ на: комментарий от XMs

Оперативке конечно годков много, и даже как-то я запускал несколько лет назад memtest, редкие ошибки пролетали. Но на хосте таких проблем не было по части торрентов, просто понадобилось заизолировать их в виртуалке.

Maniac_with_a_saw ()
Ответ на: комментарий от Maniac_with_a_saw

несколько лет назад memtest, редкие ошибки пролетали

хера ты бесбашенный, я бы наверно с ума сошёл от того что файлы рандомно бьются и все программы идут в разнос

anonymous ()
Ответ на: комментарий от anonymous

Ничего не идет в разнос. Такие ошибки появляются на любой планке через 1-2 года. Если бомбить с этого и менять их каждые 2 года, то надо быть олигархом. Но так делают только идиоты. Нормальным людям хватает бэкапа на внешний носитель или облако и проверки по контрольной сумме.

Maniac_with_a_saw ()

Отключил своп - нихрена не изменилось! Все зависло опять. Только теперь в графе свопа красивая циферка «0». При этом, оперативка так же не превышала 600-800 мб (из выделенных 4 гб). Я так понимаю, остался только один шанс - в выходные попробовать qBittorent. Я давно так не обламывался.

Maniac_with_a_saw ()

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

https://www.virtualbox.org/ticket/15662

В тикете парень пожаловался на фризы при активном использовании общей папки (видимо, операции ввода-вывода).

Ниже в каментах дофига похожих историй, с самыми разными конфигурациями хостов и гостевых систем.

И целых 2 камента с торрентами и общей папкой.

Same here Windows 10 64 bit as host and windows 7 64 bit as guest. When fast downloading torrents it freezes. Thanks got I found this issue and downgraded to 5.0.26

Same here with Gentoo host and Windows 8.1 64-bit guest. My use case is running uTorrent and seeding a lot of files from a share folder. 5.0.26 host is also fine here, even with 5.1.4 guest additions.

Правда, в моем случае нет никаких больших скоростей и большого кол-ва файлов, но все же.

Если почитать все каменты, то это какой-то кроссплатформенный баг, который тянется аж со времен Virtualbox 5 и вешает виртуалки из-за частого обращения к общей папке (запись или чтение).

Плохо, что там статус «fixed», хотя это явно не так.

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

Начинаю тестить скачивание в обычную папку в /home.

Maniac_with_a_saw ()

Помимо прочего, я сделал маленькое открытие.

vm.swappiness=0

Не отключает своп. Он продолжает забиваться.

А вот команда:

swapoff -a

Его отключает - даже в системном мониторе теперь пишет:

Область подкачки недоступна

И я выделил 8 гб оперативки для виртуалки.

Если и после всего этого она зависнет, то проблема явно в общей папке. Но с этим я в выходные разберусь, докачаю старые файлы как есть, а новые тогда в обычной папке настрою.

Maniac_with_a_saw ()