top zeigt nahezu konstant 50% cpu-last (sys): mdev forkt unzählige prozesse

coolphoenix

Mitglied
Mitglied seit
21 Jul 2005
Beiträge
234
Punkte für Reaktionen
0
Punkte
0
habe seit eben folgendes problem (54.04.63freetz-devel-2823 7270 all in one):

top zeigt mir nahezu konstant 50% cpu-last bei "sys" an. es schwankt zwischen 40 und 60%. bei den prozessen ist allerdings nirgendwo ein prozess auszumachen, der eine hohe cpu-last hat (vermutlich zeigt top das einfach nur nicht an, weil es ja "sys" ist).

habe schon versucht, die box mehrmals neuzustarten und mein image nochmal nach einem make distclean zu flashen - keine änderung.

was ich allerdings im log finde (evtl. hängt das damit zusammen)

Code:
ERROR: ld.so: object 'libfreetz.so.1.0.0' from LD_PRELOAD cannot be preloaded: ignored.
ERROR: ld.so: object 'libfreetz.so.1.0.0' from LD_PRELOAD cannot be preloaded: ignored.
ERROR: ld.so: object 'libfreetz.so.1.0.0' from LD_PRELOAD cannot be preloaded: ignored.
ERROR: ld.so: object 'libfreetz.so.1.0.0' from LD_PRELOAD cannot be preloaded: ignored.
ERROR: ld.so: object 'libfreetz.so.1.0.0' from LD_PRELOAD cannot be preloaded: ignored.
ERROR: ld.so: object 'libfreetz.so.1.0.0' from LD_PRELOAD cannot be preloaded: ignored.
ERROR: ld.so: object 'libfreetz.so.1.0.0' from LD_PRELOAD cannot be preloaded: ignored.
ERROR: ld.so: object 'libfreetz.so.1.0.0' from LD_PRELOAD cannot be preloaded: ignored.
ERROR: ld.so: object 'libfreetz.so.1.0.0' from LD_PRELOAD cannot be preloaded: ignored.

benutze mdev und external, .config ist angehangen.

ich würde gerne wissen, welcher prozess diese cpu-last im "sys" verursacht - das wäre ja schon mal ein anfang. kann man das irgendwie herausfinden?

mfg cp
 

Anhänge

  • .config.bz2
    3.6 KB · Aufrufe: 2
Zuletzt bearbeitet:
Ist die gesuchte libfreetz.so.1.0.0 denn in /lib oder /usr/lib? Ist sie auf dem PC unter root/lib oder root/usr/lib?

MfG Oliver
 
Code:
/var/mod/root # ls /lib/libfreetz.so* -lh
lrwxrwxrwx    1 root     root           14 Nov 30 16:23 /lib/libfreetz.so -> libfreetz.so.1
lrwxrwxrwx    1 root     root           18 Nov 30 16:23 /lib/libfreetz.so.1 -> libfreetz.so.1.0.0
-rwxr-xr-x    1 root     root         3.1k Nov 30 16:16 /lib/libfreetz.so.1.0.0

coolphoenix@eltarun ~/freetz-trunk-new $ ls -lh root/lib/libfreetz.so*
lrwxrwxrwx 1 coolphoenix coolphoenix   14 30. Nov 16:16 root/lib/libfreetz.so -> libfreetz.so.1
lrwxrwxrwx 1 coolphoenix coolphoenix   18 30. Nov 16:16 root/lib/libfreetz.so.1 -> libfreetz.so.1.0.0
-rwxr-xr-x 1 coolphoenix coolphoenix 3,1K 30. Nov 16:16 root/lib/libfreetz.so.1.0.0

in [root]/usr/lib/ ist sie nicht.
 
Wenn die Datei da ist, dann hab ich keine so richtige Idee was ihm nicht passt. Normalerweise geht gar nix, wenn eine Preload Datei fehlt.

MfG Oliver
 
hmm wo finde ich denn den inhalt von "LD_PRELOAD"?

und zu der sache mit der cpu-last keine idee?
 
Die Last könnte ja schon von dem Problem kommen. Die Variable wird am Anfang von /etc/init.d/rc.S deklariert. In Freetz über patches/101-libfreetz.sh.

Bei Darkyputz funktioniert das ganze mit 7270 AiO...

MfG Oliver
 
also meine rc.S auf der box sieht so aus (der anfang)

Code:
#! /bin/sh
##########################################################################################
#! /bin/sh
#delete_shell_comment
###########################################################################################
###########################################################################################
trap "" SIGHUP
trap ":" INT QUIT TSTP
PATH=/sbin:/bin:/usr/sbin:/usr/bin
runlevel=S
prevlevel=N
umask 022
LD_PRELOAD="libfreetz.so.1.0.0"
export PATH runlevel prevlevel LD_PRELOAD
###########################################################################################

da ich leider keine ahnung habe, wo dieses "LD_PRELOAD" dann verwended, verliert sich da irgendwie die spur und ich wüsste nicht, wo ich noch weiter suchen soll *g*

vielleicht müsste man den absoluten pfad dort angeben?

in meiner busybox shell ist übrigens
Code:
LD_LIBRARY_PATH='/mod/lib'

vllt müsste da auch /lib usw rein? oder hat's damit nichts zu tun?
 
Dieses LD_PRELOAD wird global verwendet. Gilt also für jeden exec (?) Aufruf. Du könntest mal mit strace schauen wo die libfreetz.so.1.0.0 gesucht wird. Und falls auch in /mod/lib, da testweise mal eine neue bauen und reinkopieren.

Code:
make libfreetz-dirclean
make libfreetz-precompiled
MfG Oliver
 
okey, nur wie finde ich heraus, welches prog die libfreetz braucht? also wie soll ich strace aufrufen?

edit: mein /mod/lib ist übrigens leer - soll das so sein?
 
Die Libfreetz wird von jedem Programm geladen.

Ja, /mod/lib ist normalerweise leer.

MfG Oliver
 
bei mir geht es auch mit der AIO, müsste er nicht /lib mit zum LD_LIBRARY_PATH hinzufügen?
 
also ich finde bei mir kein programm, das die libfreetz lädt. z.b.

Code:
/var/media/ftp # strace smbpasswd 2>&1 | grep libfreetz 
/var/media/ftp # strace smbpasswd 2>&1 | grep open
open("/mod/lib/libgcc_s.so.1", O_RDONLY) = -1 ENOENT (No such file or directory)
open("/lib/libgcc_s.so.1", O_RDONLY)    = 3
open("/mod/lib/libc.so.0", O_RDONLY)    = -1 ENOENT (No such file or directory)
open("/lib/libc.so.0", O_RDONLY)        = 3
open("/mod/lib/libc.so.0", O_RDONLY)    = -1 ENOENT (No such file or directory)
open("/lib/libc.so.0", O_RDONLY)        = 3
open("/mod/etc/smbpasswd", O_WRONLY|O_CREAT|O_TRUNC|O_LARGEFILE, 0666) = 3
open("/var/tmp/smbpasswd.cleartext", O_RDONLY|O_LARGEFILE) = -1 ENOENT (No such file or directory)

--> kein von mir getestetes programm lädt die libfreetz.so. habe noch zusätzlich stunnel, mount und smbd ausprobiert o_O
 
/lib und /usr/lib ist Standard, und wird ergänzt um LD_LIBRARY_PATH.

Code:
/var/mod/root # export LD_PRELOAD=libfreetz.so.1.0.0
/var/mod/root # ./strace ./strace
execve("./strace", ["./strace"], [/* 101 vars */]) = 0
old_mmap(NULL, 20, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0x2aaad000
open("/mod/lib/libfreetz.so.1.0.0", O_RDONLY) = 3
old_mmap(NULL, 4096, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0x2aaae000
read(3, "\177ELF\1\1\1\0\0\0\0\0\0\0\0\0\3\0\10\0\1\0\0\0 \5\0\0004\0\0\0|"..., 4096) = 3092
old_mmap(NULL, 69632, PROT_NONE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0x2aabd000
old_mmap(0x2aabd000, 1900, PROT_READ|PROT_EXEC, MAP_PRIVATE|MAP_FIXED, 3, 0) = 0x2aabd000
old_mmap(0x2aacd000, 1988, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_FIXED, 3, 0) = 0x2aacd000
close(3)                                = 0
munmap(0x2aaae000, 4096)                = 0
open("/mod/lib/libgcc_s.so.1", O_RDONLY) = -1 ENOENT (No such file or directory)
open("/lib/libgcc_s.so.1", O_RDONLY)    = 3
MfG Oliver
 
okey, nun hab ich herausgefunden woran das mit dem ld_preload liegt: lag daran, dass ich etwas innerhalb eines chroots gestartet habe (in der rc.custom) - da dort ld_preload gesetzt war aber im chroot das ding nicht vorhanden war, ging beim starten über die shell im laufenden betrieb alles klar, in der rc.custom aber nicht... hatte im endeffekt aber keine auswirkungen... sorry


und zur cpu-last: liegt an mdev. habe die box ohne angesteckte festplatten gestartet --> symptom nicht vorhanden. dann habe ich meine festplatten angesteckt --> cpu-last steigt.

und zwar werden pro partition, die ich an meinen usb-hub anschließe, bestimmte prozesse gestartet. für meine 3 partitionen sieht das so aus (habe die erst nach dem starten der box eingesteckt, deswegen so hohe pids):

Code:
 1515 root      1228 S <  /sbin/mdev block 
 1516 root      1228 S <  /sbin/mdev block 
 1517 root      1224 S <  sh -c /lib/mdev/block/partition 
 1520 root      1240 S <  /bin/sh /lib/mdev/block/partition 
 1522 root      1224 S <  sh -c /lib/mdev/block/partition 
 1523 root      1240 S <  /bin/sh /lib/mdev/block/partition 
 2191 root      1228 S <  /sbin/mdev block 
 2193 root      1224 S <  sh -c /lib/mdev/block/partition 
 2194 root      1240 S <  /bin/sh /lib/mdev/block/partition

kille ich nun alle diese prozesse, verschwindet die cpu-last. keine ahnung, wofür die gut sind, gemountet wurde alles - und scheint auch nach dem killen zu funktionieren.
 
Hm, könnte mal wieder ein Problem mit der busybox sein. Kannst du mal strace machen was die so treiben?

MfG Oliver
 
okey, habe eine partition unmounted und dann "mdev -s" ausgeführt - dort häng die busybox nun. die drei prozesse wurden wie erwartet gestartet, cpu last ist gestiegen, und strace sagt folgends:

Code:
/var/mod/root # ps | grep mdev
 5810 root      1260 S    mdev -s 
 5834 root      1228 S    sh -c /lib/mdev/block/partition 
 5835 root      1244 S    /bin/sh /lib/mdev/block/partition 
 6121 root      1220 S    grep mdev 
/var/mod/root # strace -p 5810
Process 5810 attached - interrupt to quit
wait4(5834,  <unfinished ...>
Process 5810 detached
/var/mod/root # strace -p 5834
Process 5834 attached - interrupt to quit
wait4(-1,  <unfinished ...>
Process 5834 detached
/var/mod/root # strace -p 5835
Process 5835 attached - interrupt to quit
SYS_516()                               = 4253
svr4_syscall()                          = -1 ERRNO_4005 (Unknown error 4005)
svr4_read()                             = 4220
svr4_exec()                             = 4063
svr4_exit()                             = 4006
svr4_syscall()                          = -1 ERRNO_4002 (Unknown error 4002)
n32_fstatfs64()                         = 4114
n32_fstatfs64( <unfinished ...>
--- SIGCHLD (Child exited) @ 0 (0) ---
<... n32_fstatfs64 resumed> )           = -1 ERRNO_4063 (Unknown error 4063)
svr4_exit()                             = 4006
svr4_syscall()                          = 4166
svr4_syscall()                          = -1 ERRNO_4005 (Unknown error 4005)
svr4_read()                             = 4220
svr4_exec()                             = 4063
svr4_exit()                             = 4006
svr4_syscall()                          = -1 ERRNO_4002 (Unknown error 4002)
n32_sendfile64()                        = 4114
n32_sendfile64( <unfinished ...>
--- SIGCHLD (Child exited) @ 0 (0) ---
<... n32_sendfile64 resumed> )          = -1 ERRNO_4063 (Unknown error 4063)
svr4_exit()                             = 4006
svr4_syscall()                          = 4166
svr4_syscall()                          = -1 ERRNO_4005 (Unknown error 4005)
svr4_read()                             = 4220
svr4_exec()                             = 4063
svr4_exit()                             = 4006
svr4_syscall()                          = -1 ERRNO_4002 (Unknown error 4002)
n32_timer_create(0x4b175c, 0x4b3be4, 0) = 4114
n32_timer_create(0xffffffff, 0x7fb6f718, 0 <unfinished ...>
--- SIGCHLD (Child exited) @ 0 (0) ---
<... n32_timer_create resumed> )        = -1 ERRNO_4063 (Unknown error 4063)
svr4_exit()                             = 4006
svr4_syscall()                          = 4166
svr4_syscall()                          = -1 ERRNO_4005 (Unknown error 4005)
svr4_read()                             = 4220
svr4_exec()                             = 4063
svr4_exit()                             = 4006
svr4_syscall()                          = -1 ERRNO_4002 (Unknown error 4002)
n32_timer_settime(0x4b175c, 0x4b3be4, 0, 0) = 4114
n32_timer_settime(0xffffffff, 0x7fb6f718, 0, 0 <unfinished ...>
--- SIGCHLD (Child exited) @ 0 (0) ---
<... n32_timer_settime resumed> )       = -1 ERRNO_4063 (Unknown error 4063)
svr4_exit()                             = 4006
svr4_syscall()                          = 4166
svr4_syscall()                          = -1 ERRNO_4005 (Unknown error 4005)
svr4_read()                             = 4220
svr4_exec()                             = 4063
svr4_exit()                             = 4006
svr4_syscall()                          = -1 ERRNO_4002 (Unknown error 4002)
n32_timer_gettime(0x4b175c, 0x4b3be4)   = 4114
n32_timer_gettime(0xffffffff, 0x7fb6f718 <unfinished ...>
--- SIGCHLD (Child exited) @ 0 (0) ---
<... n32_timer_gettime resumed> )       = -1 ERRNO_4063 (Unknown error 4063)
svr4_exit()                             = 4006
svr4_syscall()                          = 4166
svr4_syscall()                          = -1 ERRNO_4005 (Unknown error 4005)
svr4_read()                             = 4220
svr4_exec()                             = 4063
svr4_exit()                             = 4006
svr4_syscall()                          = -1 ERRNO_4002 (Unknown error 4002)
n32_timer_getoverrun(0x4b175c)          = 4114
n32_timer_getoverrun(0xffffffff <unfinished ...>
--- SIGCHLD (Child exited) @ 0 (0) ---
<... n32_timer_getoverrun resumed> )    = -1 ERRNO_4063 (Unknown error 4063)
svr4_exit()                             = 4006
svr4_syscall()                          = 4166
svr4_syscall()                          = -1 ERRNO_4005 (Unknown error 4005)
svr4_read()                             = 4220
svr4_exec()                             = 4063
svr4_exit()                             = 4006
svr4_syscall()                          = -1 ERRNO_4002 (Unknown error 4002)
n32_timer_delete(0x4b175c)              = 4114
n32_timer_delete(0xffffffff <unfinished ...>
--- SIGCHLD (Child exited) @ 0 (0) ---
<... n32_timer_delete resumed> )        = -1 ERRNO_4063 (Unknown error 4063)
svr4_exit()                             = 4006
svr4_syscall()                          = 4166
svr4_syscall()                          = -1 ERRNO_4005 (Unknown error 4005)
svr4_read()                             = 4220
svr4_exec()                             = 4063
svr4_exit()                             = 4006
svr4_syscall()                          = -1 ERRNO_4002 (Unknown error 4002)
n32_clock_settime(0x4b175c, 0x4b3be4)   = 4114
n32_clock_settime(0xffffffff, 0x7fb6f718 <unfinished ...>
--- SIGCHLD (Child exited) @ 0 (0) ---
<... n32_clock_settime resumed> )       = -1 ERRNO_4063 (Unknown error 4063)
svr4_exit()                             = 4006
svr4_syscall()                          = 4166
svr4_syscall()                          = -1 ERRNO_4005 (Unknown error 4005)
svr4_read()                             = 4220
svr4_exec()                             = 4063
svr4_exit()                             = 4006
svr4_syscall()                          = -1 ERRNO_4002 (Unknown error 4002)
n32_clock_gettime(0x4b175c, 0x4b3be4)   = 4114
n32_clock_gettime(0xffffffff, 0x7fb6f718 <unfinished ...>
--- SIGCHLD (Child exited) @ 0 (0) ---
<... n32_clock_gettime resumed> )       = -1 ERRNO_4063 (Unknown error 4063)
svr4_exit()                             = 4006
svr4_syscall()                          = 4166
svr4_syscall()                          = -1 ERRNO_4005 (Unknown error 4005)
svr4_read()                             = 4220
svr4_exec()                             = 4063
svr4_exit()                             = 4006
svr4_syscall()                          = -1 ERRNO_4002 (Unknown error 4002)
n32_clock_getres(0x4b175c, 0x4b3be4)    = 4114
n32_clock_getres(0xffffffff, 0x7fb6f718 <unfinished ...>
--- SIGCHLD (Child exited) @ 0 (0) ---
<... n32_clock_getres resumed> )        = -1 ERRNO_4063 (Unknown error 4063)
svr4_exit()                             = 4006
svr4_syscall()                          = 4166
svr4_syscall()                          = -1 ERRNO_4005 (Unknown error 4005)
svr4_read()                             = 4220
svr4_exec()                             = 4063
svr4_exit()                             = 4006
svr4_syscall()                          = -1 ERRNO_4002 (Unknown error 4002)
n32_clock_nanosleep(0x4b175c, 0x4b3be4, 0, 0) = 4114
n32_clock_nanosleep(0xffffffff, 0x7fb6f718, 0, 0 <unfinished ...>
--- SIGCHLD (Child exited) @ 0 (0) ---
<... n32_clock_nanosleep resumed> )     = -1 ERRNO_4063 (Unknown error 4063)
svr4_exit()                             = 4006
svr4_syscall()                          = 4166
svr4_syscall()                          = -1 ERRNO_4005 (Unknown error 4005)
svr4_read()                             = 4220
svr4_exec()                             = 4063
svr4_exit()                             = 4006
svr4_syscall()                          = -1 ERRNO_4002 (Unknown error 4002)
n32_tgkill(0x4b175c, 0x4b3be4, 0)       = 4114
n32_tgkill(0xffffffff, 0x7fb6f718, 0 <unfinished ...>
--- SIGCHLD (Child exited) @ 0 (0) ---
<... n32_tgkill resumed> )              = -1 ERRNO_4063 (Unknown error 4063)
svr4_exit()                             = 4006
svr4_syscall()                          = 4166
svr4_syscall()                          = -1 ERRNO_4005 (Unknown error 4005)
svr4_read()                             = 4220
svr4_exec()                             = 4063
svr4_exit()                             = 4006
svr4_syscall()                          = -1 ERRNO_4002 (Unknown error 4002)
n32_utimes(0x4b175c, 0x4b3be4)          = 4114
n32_utimes(0xffffffff, 0x7fb6f718 <unfinished ...>
--- SIGCHLD (Child exited) @ 0 (0) ---
<... n32_utimes resumed> )              = -1 ERRNO_4063 (Unknown error 4063)
svr4_exit()                             = 4006
svr4_syscall()                          = 4166
svr4_syscall()                          = -1 ERRNO_4005 (Unknown error 4005)
svr4_read()                             = 4220
svr4_exec()                             = 4063
svr4_exit()                             = 4006
svr4_syscall()                          = -1 ERRNO_4002 (Unknown error 4002)
SYS_6231()                              = 4114
SYS_6231( <unfinished ...>
--- SIGCHLD (Child exited) @ 0 (0) ---
<... SYS_6231 resumed> )                = -1 ERRNO_4063 (Unknown error 4063)
svr4_exit()                             = 4006
svr4_syscall()                          = 4166
Process 5835 detached

das geht da irgendwie so weiter.


und nun, nach einiger zeit sieht es so aus:

Code:
/var/mod/root # strace -p 5835
--- SIGCHLD (Child exited) @ 0 (0) ---
dup2(11, 1)                             = 1
close(11)                               = 0
nanosleep({0, 200000000}, NULL)         = 0
open("/dev/null", O_WRONLY|O_CREAT|O_TRUNC|O_LARGEFILE, 0666) = 3
fcntl64(1, F_DUPFD, 10)                 = 11
dup2(3, 1)                              = 1
close(3)                                = 0
fork()                                  = 7082
wait4(-1, [{WIFEXITED(s) && WEXITSTATUS(s) == 0}], 0, NULL) = 7082
--- SIGCHLD (Child exited) @ 0 (0) ---
dup2(11, 1)                             = 1
close(11)                               = 0
nanosleep({0, 200000000}, NULL)         = 0
open("/dev/null", O_WRONLY|O_CREAT|O_TRUNC|O_LARGEFILE, 0666) = 3
fcntl64(1, F_DUPFD, 10)                 = 11
dup2(3, 1)                              = 1
close(3)                                = 0
fork()                                  = 7083
wait4(-1, [{WIFEXITED(s) && WEXITSTATUS(s) == 0}], 0, NULL) = 7083
--- SIGCHLD (Child exited) @ 0 (0) ---
dup2(11, 1)                             = 1
close(11)                               = 0
nanosleep({0, 200000000}, NULL)         = 0
open("/dev/null", O_WRONLY|O_CREAT|O_TRUNC|O_LARGEFILE, 0666) = 3
fcntl64(1, F_DUPFD, 10)                 = 11
dup2(3, 1)                              = 1
close(3)                                = 0
fork()                                  = 7084
wait4(-1, [{WIFEXITED(s) && WEXITSTATUS(s) == 0}], 0, NULL) = 7084
--- SIGCHLD (Child exited) @ 0 (0) ---
dup2(11, 1)                             = 1
close(11)                               = 0
nanosleep({0, 200000000}, NULL)         = 0
open("/dev/null", O_WRONLY|O_CREAT|O_TRUNC|O_LARGEFILE, 0666) = 3
fcntl64(1, F_DUPFD, 10)                 = 11
dup2(3, 1)                              = 1
close(3)                                = 0
fork()                                  = 7085
wait4(-1, [{WIFEXITED(s) && WEXITSTATUS(s) == 0}], 0, NULL) = 7085
--- SIGCHLD (Child exited) @ 0 (0) ---
dup2(11, 1)                             = 1
close(11)                               = 0
nanosleep({0, 200000000}, NULL)         = 0
open("/dev/null", O_WRONLY|O_CREAT|O_TRUNC|O_LARGEFILE, 0666) = 3
fcntl64(1, F_DUPFD, 10)                 = 11
dup2(3, 1)                              = 1
close(3)                                = 0
fork()                                  = 7086
wait4(-1, [{WIFEXITED(s) && WEXITSTATUS(s) == 0}], 0, NULL) = 7086
--- SIGCHLD (Child exited) @ 0 (0) ---
dup2(11, 1)                             = 1
close(11)                               = 0
nanosleep({0, 200000000},  <unfinished ...>
Process 5835 detached

und das geht wohl ewig so weiter. endlosschleife o_O
 
Zuletzt bearbeitet:
Wann hast du denn das letzte mal die busybox neu gebaut? Andreas hat in 2810 und 2812 was mit diesen "noexec"-Applets gemacht. Die könnten daran Schuld sein.

MfG Oliver
 
hatte heute um 16:15 ein "make distclean" ...

hast du denn probleme mit mdev oder benutzt du es nicht?
 
Ich hab momentan kein Zugriff auf eine 7x70. Daher kann ich es nicht testen. Wenn es nicht funktioniert, dann musst du es halt ausschalten. Und vergiss nicht danach ein "make mdev-dirclean" zu machen.

MfG Oliver
 
Holen Sie sich 3CX - völlig kostenlos!
Verbinden Sie Ihr Team und Ihre Kunden Telefonie Livechat Videokonferenzen

Gehostet oder selbst-verwaltet. Für bis zu 10 Nutzer dauerhaft kostenlos. Keine Kreditkartendetails erforderlich. Ohne Risiko testen.

3CX
Für diese E-Mail-Adresse besteht bereits ein 3CX-Konto. Sie werden zum Kundenportal weitergeleitet, wo Sie sich anmelden oder Ihr Passwort zurücksetzen können, falls Sie dieses vergessen haben.