rtorrent 200% загрузки CPU

Простые/общие вопросы по UNIX системам. Спросите здесь, если вы новичок

Модераторы: vadim64, terminus

Правила форума
Убедительная просьба юзать теги [cоde] при оформлении листингов.
Сообщения не оформленные должным образом имеют все шансы быть незамеченными.
bishamon
проходил мимо
Сообщения: 4
Зарегистрирован: 2012-07-25 23:23:47

rtorrent 200% загрузки CPU

Непрочитанное сообщение bishamon » 2012-07-25 23:29:44

При запуске rtorrenta загрузки CPU не наблюдается (список закачек пуст), как только подсовываешь любой .torrent файлик rtorrent подвисает наглухо.

пробовал с версией 0.8.9_1, 0.9.1, 0.9.2, результат одинаковый.

в данный момент

rtorrent-0.9.2
libtorrent-0.13.2
xmlrpc-c-devel-1.29.2

# Options for rtorrent-0.9.2
_OPTIONS_READ=rtorrent-0.9.2
_FILE_COMPLETE_OPTIONS_LIST= XMLRPC IPV6
OPTIONS_FILE_SET+=XMLRPC
OPTIONS_FILE_UNSET+=IPV6

# Options for libtorrent-0.13.2
_OPTIONS_READ=libtorrent-0.13.2
_FILE_COMPLETE_OPTIONS_LIST= KQUEUE IPV6
OPTIONS_FILE_SET+=KQUEUE
OPTIONS_FILE_UNSET+=IPV6


uname -a

Код: Выделить всё

FreeBSD film.home 8.2-RELEASE-p4 amd64
top

Код: Выделить всё

73235 nobody        3  76    0 48868K 17108K kqread  1  10:56 200.00% rtorrent
procstat -k 73235

Код: Выделить всё

  PID    TID COMM             TDNAME           KSTACK                        
73235 100728 rtorrent         initial thread   <running> 
73235 100791 rtorrent         -                <running> 
73235 100944 rtorrent         -                mi_switch sleepq_catch_signals sleepq_timedwait_sig _sleep kern_kevent kevent syscallenter syscall Xfast_syscall
включаю ktrace для процесса rtorrent, проблема отпадает сама собой закачка идет, процессор не нагружается, интерфейс не виснет.
ktrace -p 73235

procstat -k 73235

Код: Выделить всё

73235 100728 rtorrent         initial thread   mi_switch sleepq_catch_signals sleepq_timedwait_sig _cv_timedwait_sig seltdwait kern_select select syscallenter syscall Xfast_syscall 
73235 100791 rtorrent         -                mi_switch sleepq_catch_signals sleepq_timedwait_sig _sleep kern_kevent kevent syscallenter syscall Xfast_syscall 
73235 100944 rtorrent         -                mi_switch sleepq_catch_signals sleepq_timedwait_sig _sleep kern_kevent kevent syscallenter syscall Xfast_syscall
выключаю ktrace опять 200% загрузка cpu и подвисший интерфейс rtorrent.
ktrace -C

procstat -k 73235

Код: Выделить всё

  PID    TID COMM             TDNAME           KSTACK                        
73235 100728 rtorrent         initial thread   <running> 
73235 100791 rtorrent         -                <running> 
73235 100944 rtorrent         -                mi_switch sleepq_catch_signals sleepq_timedwait_sig _sleep kern_kevent kevent syscallenter syscall Xfast_syscall

в чем может быть проблема, может у кого есть какие мысли?

в kdump

Код: Выделить всё

 73235 initial thread RET   thr_kill 0 
 73235 rtorrent CALL  sigreturn(0x7fffffbfea90) 
 73235 initial thread CALL  nanosleep(0x7fffffffdf20,0) 
 73235 rtorrent RET   sigreturn JUSTRETURN 
 73235 initial thread RET   nanosleep 0 
 73235 rtorrent PSIG  SIGUSR1 caught handler=0x45eb40 mask=0x0 code=0x0 
 73235 initial thread CALL  thr_kill(0x189b7,SIGUSR1) 
 73235 rtorrent CALL  sigreturn(0x7fffffbfea90) 
 73235 initial thread RET   thr_kill 0 
 73235 rtorrent RET   sigreturn JUSTRETURN 
 73235 initial thread CALL  nanosleep(0x7fffffffdf20,0) 
 73235 rtorrent PSIG  SIGUSR1 caught handler=0x45eb40 mask=0x0 code=0x0 
 73235 initial thread RET   nanosleep 0 
 73235 rtorrent CALL  sigreturn(0x7fffffbfea90) 
 73235 initial thread CALL  thr_kill(0x189b7,SIGUSR1) 
 73235 rtorrent RET   sigreturn JUSTRETURN 
и так много раз до

Код: Выделить всё

 73235 initial thread CALL  thr_kill(0x189b7,SIGUSR1) 
 73235 initial thread RET   thr_kill 0 
 73235 rtorrent PSIG  SIGUSR1 caught handler=0x45eb40 mask=0x0 code=0x0 
 73235 rtorrent CALL  sigreturn(0x7fffffbfeb10) 
 73235 rtorrent RET   sigreturn JUSTRETURN 
 73235 initial thread CALL  recvfrom(0x31,0x802051420,0x40,0,0,0) 
 73235 initial thread GIO   fd 49 read 64 bytes 
       0x0000 0000 4009 0700 0000 4800 09c0 00fb dd21 66df 44d6 4768 cbd6 a631 7ac2 27ca ba9b 5053 ea2d c4d5  |..@.....H......!f.D.Gh...1z.'...PS.-..| 
       0x0026 3714 9652 5ae0 42f8 283d 040b 1930 8708 eaa6 490c d47e e6a3 d583                                |7..RZ.B.(=...0....I..~....| 


 73235 initial thread RET   recvfrom 64/0x40 
 73235 initial thread CALL  recvfrom(0x31,0x80309c033,0x3fcd,0,0,0) 
 73235 initial thread GIO   fd 49 read 4096 bytes 
       0x0000 ca9b 44e4 3714 90fb 26e6 b79e 820c ce4c cda7 f100 7a16 6d6f 9b51 bd38 43d8 8a8b 4a45 ddcf 6641  |..D.7...&......L....z.mo.Q.8C...JE..fA| 
       0x0026 18a0 e3cb c5b6 3b7b 56f2 8e29 d6b5 8f6b 3990 9925 f6ad 1a65 4c98 2312 21cd ddfb 3c50 26a5 22e0  |......;{V..)...k9..%...eL.#.!...<P&.".| 
Последний раз редактировалось f_andrey 2012-07-25 23:36:29, всего редактировалось 1 раз.
Причина: Автору, выбирайте пожалуйста раздел соответствуюший тематике вашего сообщения

Хостинговая компания Host-Food.ru
Хостинг HostFood.ru
 

Услуги хостинговой компании Host-Food.ru

Хостинг HostFood.ru

Тарифы на хостинг в России, от 12 рублей: https://www.host-food.ru/tariffs/hosting/
Тарифы на виртуальные сервера (VPS/VDS/KVM) в РФ, от 189 руб.: https://www.host-food.ru/tariffs/virtualny-server-vps/
Выделенные сервера, Россия, Москва, от 2000 рублей (HP Proliant G5, Intel Xeon E5430 (2.66GHz, Quad-Core, 12Mb), 8Gb RAM, 2x300Gb SAS HDD, P400i, 512Mb, BBU):
https://www.host-food.ru/tariffs/vydelennyi-server-ds/
Недорогие домены в популярных зонах: https://www.host-food.ru/domains/

bishamon
проходил мимо
Сообщения: 4
Зарегистрирован: 2012-07-25 23:23:47

Re: rtorrent 200% загрузки CPU

Непрочитанное сообщение bishamon » 2012-07-26 9:47:21

при использовании truss аналогичная ситуация, включаем дебаг и процесс отмирает, загрузка на cpu падает

Код: Выделить всё

SIGNAL 17 (SIGSTOP)
nanosleep({0.000000000 })                        = 0 (0x0)
sigreturn(0x7fffffbfea90,0x0,0x4163e0,0x52ee5567,0x4000,0x7fffffbfeee0) ERR#4 'Interrupted system call'
SIGNAL 30 (SIGUSR1)
sigreturn(0x7fffffbfea90,0x0,0x4163e0,0x52ee5567,0x4000,0x7fffffbfeee0) ERR#4 'Interrupted system call'
SIGNAL 30 (SIGUSR1)
thr_kill(0x1880c,0x1e,0x801d2ee40,0x187fd,0x7fffffffe140,0x0) = 0 (0x0)
sigreturn(0x7fffffbfea90,0x10001,0x4163e0,0x52ee5567,0x4000,0x7fffffbfeee0) ERR#4 'Interrupted system call'
SIGNAL 30 (SIGUSR1)
sigreturn(0x7fffffbfea90,0x10001,0x4163e0,0x52ee5567,0x4000,0x7fffffbfeee0) ERR#4 'Interrupted system call'
SIGNAL 30 (SIGUSR1)
sigreturn(0x7fffffbfea90,0x10001,0x4163e0,0x52ee5567,0x4000,0x7fffffbfeee0) ERR#4 'Interrupted system call'
SIGNAL 30 (SIGUSR1)
sigreturn(0x7fffffbfea90,0x10001,0x4163e0,0x52ee5567,0x4000,0x7fffffbfeee0) ERR#4 'Interrupted system call'
SIGNAL 30 (SIGUSR1)
nanosleep({0.000000000 })                        = 0 (0x0)
thr_kill(0x1880c,0x1e,0x801d2ee40,0x187fd,0x7fffffffe140,0x0) = 0 (0x0)
nanosleep({0.000000000 })                        = 0 (0x0)
SIGNAL 30 (SIGUSR1)
thr_kill(0x1880c,0x1e,0x801d2ee40,0x187fd,0x7fffffffe140,0x0) = 0 (0x0)
nanosleep({0.000000000 })                        = 0 (0x0)
thr_kill(0x1880c,0x1e,0x801d2ee40,0x187fd,0x7fffffffe140,0x0) = 0 (0x0)
SIGNAL 30 (SIGUSR1)
sigreturn(0x7fffffbfea90,0x10001,0x4163e0,0x52ee5567,0x4000,0x7fffffbfeee0) ERR#4 'Interrupted system call'
SIGNAL 30 (SIGUSR1)
nanosleep({0.000000000 })                        = 0 (0x0)
sigreturn(0x7fffffbfea90,0x10001,0x4163e0,0x52ee5567,0x4000,0x7fffffbfeee0) ERR#4 'Interrupted system call'
SIGNAL 30 (SIGUSR1)
thr_kill(0x1880c,0x1e,0x801d2ee40,0x187fd,0x7fffffffe140,0x0) = 0 (0x0)
nanosleep({0.000000000 })                        = 0 (0x0)
thr_kill(0x1880c,0x1e,0x801d2ee40,0x187fd,0x7fffffffe140,0x0) = 0 (0x0)
SIGNAL 30 (SIGUSR1)
sigreturn(0x7fffffbfea90,0x10001,0x4163e0,0x52ee5567,0x4000,0x7fffffbfeee0) ERR#4 'Interrupted system call'
SIGNAL 30 (SIGUSR1)
sigreturn(0x7fffffbfea90,0x10001,0x4163e0,0x52ee5567,0x4000,0x7fffffbfeee0) ERR#4 'Interrupted system call'
SIGNAL 30 (SIGUSR1)
sigreturn(0x7fffffbfea90,0x10001,0x4163e0,0x52ee5567,0x4000,0x7fffffbfeee0) ERR#4 'Interrupted system call'
и так множество раз до

Код: Выделить всё

SIGNAL 30 (SIGUSR1)
thr_kill(0x1880c,0x1e,0x801d2ee40,0x187fd,0x7fffffffe140,0x0) = 0 (0x0)
sigreturn(0x7fffffbfe9d0,0x10001,0x4163e0,0x52ee5567,0x4000,0x7fffffbfeee0) = 140733193388032 (0x7fff00000000)
recvfrom(24,"\0\0@\t\a\0\0\^AR\0\^C\M^@\0\M-Q"...,64,0x0,NULL,0x0) = 64 (0x40)
recvfrom(56,"\M-L\M-cw#\M-`XuEK4!\M^G=m\n\M-T"...,16333,0x0,NULL,0x0) = 16333 (0x3fcd)
recvfrom(56,"\0\0@\t\a\0\0\^AR\0\^V\M^@\0\M^B"...,64,0x0,NULL,0x0) = 64 (0x40)
recvfrom(56,"\M-Z\M^Y/\M-1X\^V\M-V\M^@\M-Dhn"...,16333,0x0,NULL,0x0) = 16333 (0x3fcd)
recvfrom(56,"\0\0@\t\a\0\0\^AR\0\^V\M-@\0\^W""...,64,0x0,NULL,0x0) = 64 (0x40)
recvfrom(56,"\^YJ\M-vX\M-[Wr\M-=\M-5\M-W\M-C"...,16333,0x0,NULL,0x0) = 16333 (0x3fcd)
recvfrom(56,"\0\0@\t\a\0\0\^AR\0\^W\0\0-W\^Tv"...,64,0x0,NULL,0x0) = 64 (0x40)
recvfrom(56,"\^Z\M-j\M-A\M-/-\n\^D\M^B\^Q\^A"...,16333,0x0,NULL,0x0) = 16333 (0x3fcd)
recvfrom(56,"\0\0@\t\a\0\0\^AR\0\^W@\0\b\M-(-"...,64,0x0,NULL,0x0) = 64 (0x40)
recvfrom(73,"\M^Eg\M-z,G\M^Yc\M-4R>I|@k\^]"...,16333,0x0,NULL,0x0) = 16333 (0x3fcd)
recvfrom(73,"\0\0@\t\a\0\0\^AR\0\^C\0\0\M-<"...,64,0x0,NULL,0x0) = 64 (0x40)
recvfrom(73,">\M-t\M^Z\M-z\M^Z\M-b\M-$\^B\M^R"...,16333,0x0,NULL,0x0) = 16333 (0x3fcd)
recvfrom(73,"\0\0@\t\a\0\0\^AR\0\^C@\0)q\240"...,64,0x0,NULL,0x0) = 64 (0x40)
recvfrom(73,"n\M-d\M^C\M^G\M-ZO\M-]\M-U\M^PQ"...,16333,0x0,NULL,0x0) = 16333 (0x3fcd)
отключаем дебаг и процесс вновь уходит в себя с 200% загрузкой CPU

Charlz_Klug_
проходил мимо

Re: rtorrent 200% загрузки CPU

Непрочитанное сообщение Charlz_Klug_ » 2012-07-26 9:58:45

А в rtorrent.rc что?

bishamon
проходил мимо
Сообщения: 4
Зарегистрирован: 2012-07-25 23:23:47

Re: rtorrent 200% загрузки CPU

Непрочитанное сообщение bishamon » 2012-07-26 10:34:30

Charlz_Klug_ писал(а):А в rtorrent.rc что?
рабочий конфиг, использовался в версиях 0.8.9 и младше без каких либо нареканий, но в старых версиях свои косяки были, которые правились допустим так (http://libtorrent.rakshasa.no/ticket/2661).

при переходе на версию 0.9.2 убраны hash_read_ahead, hash_max_tries, hash_interval т.к их убрали вообще в актуальном релизе.

С отладкой (ktrace) работает как надо, загрузка cpu 10-12%, загрузка файла 30мбит/c, только не вечно же процесс держать в нем чтобы пользоваться rtorrent.

bishamon
проходил мимо
Сообщения: 4
Зарегистрирован: 2012-07-25 23:23:47

Re: rtorrent 200% загрузки CPU

Непрочитанное сообщение bishamon » 2012-07-26 17:13:36

в общем сделал portdowngrade до rtorrent-0.8.9 с патчем вручную (rtorrent-0.8.9_1, где этот патч якобы применен также 200% загрузки CPU. Патч который в портах не полный)

Код: Выделить всё

--- src/thread_base.cc.org      2011-04-05 06:26:12.000000000 -0400
+++ src/thread_base.cc  2011-11-07 19:53:21.484185000 -0500
@@ -61,7 +61,7 @@

   static const unsigned int max_size = 32;

-  thread_queue_hack() { std::memset(this, 0, sizeof(thread_queue_hack)); }
+  thread_queue_hack() : m_lock(0) { std::memset(this, 0, sizeof(thread_queue_hack)); }

   void     lock()   { while (!__sync_bool_compare_and_swap(&m_lock, 0, 1)) usleep(0); }
   void     unlock() { __sync_bool_compare_and_swap(&m_lock, 1, 0); }
@@ -201,10 +201,15 @@

 void
 ThreadBase::interrupt_main_polling() {
-  do {
+  int sleep_length = 0;
+
+  while (ThreadBase::is_main_polling()) {
+    pthread_kill(main_thread->m_thread, SIGUSR1);
+
     if (!ThreadBase::is_main_polling())
       return;

-    pthread_kill(main_thread->m_thread, SIGUSR1);
-  } while (1);
+    usleep(sleep_length);
+       sleep_length = std::min(sleep_length + 50, 1000);
+  }
 }
libtorrent-0.12.9
xmlrpc-c-devel-1.28.4

в данной связке работает, своими силами не понял как новую версию без ktrace отладки заставить корректно работать.

Аватара пользователя
DrCash
проходил мимо
Сообщения: 8
Зарегистрирован: 2009-02-16 10:58:53

Re: rtorrent 200% загрузки CPU

Непрочитанное сообщение DrCash » 2012-10-05 19:41:37

Столкнулся такой же проблемой.
Сервак:
FreeBSD nas 8.3-RELEASE FreeBSD 8.3-RELEASE #0: Mon Apr 9 21:23:18 UTC 2012 root@mason.cse.buffalo.edu:/usr/obj/usr/src/sys/GENERIC amd64
дошло до переставления системы, но и это не помогло. Копался заново-дальше, наткнулся на gdb по это ссыле http://community.rutorrent.org/Rtorrent ... of_a_crash . Получается процесс ждет сигнал USR1, и из-за этого всё такое происходит.

Спасся следующим:

Код: Выделить всё

# cat /usr/local/etc/rc.d/rtorrent

#!/bin/sh
#
#

# PROVIDE: rtorrent
# REQUIRE: LOGIN
# KEYWORD: shutdown

. /etc/rc.subr

name="rtorrent"
rcvar=`set_rcvar`

load_rc_config $name

: ${rtorrent_enable="No"}
: ${rtorrent_downlods="/first"}
: ${rtorrent_sessions="/var/rtorrent/session"}
: ${rtorrent_scgi_port=""}
: ${rtorrent_args=""}
: ${rtorrent_encoding_list="cp-1251"}
: ${rtorrent_user="gogi"}
: ${rtorrent_autoload_dir=""}

command="/usr/local/bin/rtorrent"
screen="/usr/local/bin/screen"

rtorrent_args=" -d ${rtorrent_downloads} -s ${rtorrent_sessions} ${rtorrrent_args}"

[ -n "${rtorrent_autoload_dir}"   ] && rtorrent_args="-O shedule='watch_directory,5,5,load_start=${rtorrent_autoload_dir}' ${rtorrent_args}"
[ -n "${rtorrent_scgi_port}"      ] && rtorrent_args="-O scgi_port='$rtorrent_scgi_port}' ${rtorrent_args}"
[ -n "${rtorrent_enconding_list}" ] && rtorrent_args="-O encoding_list='${rtorrent_ecncoding_list}' ${rtorrent_args}"

#start_cmd="echo Starting ${name} ; su -m ${rtorrent_user} -c \"${screen} -A -m -d -S rtorrent ${command} ${rtorrent_args}\""

## Разница в этой строке
start_cmd="echo Starting ${name} ; su -m gogi -c \" screen -A -m -d -S rtorrent /usr/bin/gdb -x /home/gogi/gdb_rtorrent --args rtorrent -n -o import=/usr/home/gogi/.rtorrent.rc \""
### /Разница в этой строке


run_rc_command "$1"

# cat /home/gogi/gdb_rtorrent
handle SIGUSR1 nostop
handle SIGUSR1 ignor
handle SIGUSR1 noprint
____________________________
отказоустойчивость и безопасность - это то на чем не надо экономить и надо надеяться, что это никогда не потребуется

Аватара пользователя
tom.cat
старшина
Сообщения: 446
Зарегистрирован: 2007-11-24 20:23:49
Откуда: Мытищи
Контактная информация:

Re: rtorrent 200% загрузки CPU

Непрочитанное сообщение tom.cat » 2012-10-08 8:01:37

Transmission не катит?
When you see pigs fly it means Windows has become open source

Аватара пользователя
DrCash
проходил мимо
Сообщения: 8
Зарегистрирован: 2009-02-16 10:58:53

Re: rtorrent 200% загрузки CPU

Непрочитанное сообщение DrCash » 2012-10-08 10:06:02

Совсем, Совсем, Совсем не катит. Обрезанный, не функциональный, да и rTorrent дружит с рОдненьким интерфейсом (похожим) uTorrent'a.
Да и потом проблема колхозным методом но решена.
____________________________
отказоустойчивость и безопасность - это то на чем не надо экономить и надо надеяться, что это никогда не потребуется

Аватара пользователя
tom.cat
старшина
Сообщения: 446
Зарегистрирован: 2007-11-24 20:23:49
Откуда: Мытищи
Контактная информация:

Re: rtorrent 200% загрузки CPU

Непрочитанное сообщение tom.cat » 2012-10-08 10:16:19

Ну на вкус и цвет все фломастеры разные :) Я после геморроя с рторрентом перешел на трансмишн, все пашет без лагов и глюков :)
When you see pigs fly it means Windows has become open source

Аватара пользователя
ADRE
майор
Сообщения: 2641
Зарегистрирован: 2007-07-26 8:53:49
Контактная информация:

Re: rtorrent 200% загрузки CPU

Непрочитанное сообщение ADRE » 2012-10-08 17:55:52

mtorrent и bittorrent под виндой рулит....
//del

rayder
лейтенант
Сообщения: 661
Зарегистрирован: 2008-12-18 16:29:43
Откуда: Ukraine/Kiev
Контактная информация:

Re: rtorrent 200% загрузки CPU

Непрочитанное сообщение rayder » 2012-10-08 19:34:41

ага, только винда (если от нее не требуется специфических задач) в данной ветке не рулит :)
Человеку свойственно ошибаться, но для нечеловеческих ляпов нужен компьютер.

Аватара пользователя
DrCash
проходил мимо
Сообщения: 8
Зарегистрирован: 2009-02-16 10:58:53

Re: rtorrent 200% загрузки CPU

Непрочитанное сообщение DrCash » 2012-10-09 19:44:43

нет, может из-за того, что мельком посмотрел на transmission, но вроде как там нет раскидывания по папкам, что для меня это не приемлемо. Да и в связке rToorent + ruTorrent жена моя разобралась и всё отлично.
____________________________
отказоустойчивость и безопасность - это то на чем не надо экономить и надо надеяться, что это никогда не потребуется

pimlab
прапорщик
Сообщения: 478
Зарегистрирован: 2007-10-09 11:31:03

Re: rtorrent 200% загрузки CPU

Непрочитанное сообщение pimlab » 2012-10-10 11:16:42

с помощью transmisson-remote-gui , можно все раскидывать по папкам