• Willkommen im Linux Club - dem deutschsprachigen Supportforum für GNU/Linux. Registriere dich kostenlos, um alle Inhalte zu sehen und Fragen zu stellen.

[SOLVED] Prozess benoetigt eine komplette CPU

byron1778

Hacker
Hallo Forum!

Bin mir nicht sicher, ob ich hier wirklich richtig bin, falls nicht, dann bitte verschieben.

Zu meinem Problem.
Es laeuft bei mir ein Prozess einer Tradingapplikation und dieser Prozess benoetigt eine komplette CPU.
Er duerfte irgendwie in einem Loop haengen.

Ich dachte mir daher, ich koennte mehr mittels truss und so an Informationen einfangen.

Folgenden Output konnte ich mittels truss, pstack, etc. einfangen

Code:
truss -t read,write,open,close -r all -w all -f -e -l -d -o truss.log -p 24364

24364/3:         3.7907 read(14, 0xFDF7BCAF, 1)                         Err#11 EAGAIN

24364/3:         3.7907 read(18, 0x00534910, 8)                         Err#11 EAGAIN

24364/3:         3.7908 read(14, 0xFDF7BCAF, 1)                         Err#11 EAGAIN

24364/3:         3.7909 read(18, 0x00534910, 8)                         Err#11 EAGAIN

24364/3:         3.7910 read(14, 0xFDF7BCAF, 1)                         Err#11 EAGAIN

24364/3:         3.7911 read(18, 0x00534910, 8)                         Err#11 EAGAIN

24364/3:         3.7912 read(14, 0xFDF7BCAF, 1)                         Err#11 EAGAIN

24364/3:         3.7913 read(18, 0x00534910, 8)                         Err#11 EAGAIN

24364/3:         3.7914 read(14, 0xFDF7BCAF, 1)                         Err#11 EAGAIN

24364/3:         3.7914 read(18, 0x00534910, 8)                         Err#11 EAGAIN

24364/3:         3.7915 read(14, 0xFDF7BCAF, 1)                         Err#11 EAGAIN

24364/3:         3.7917 read(18, 0x00534910, 8)                         Err#11 EAGAIN

24364/3:         3.7918 read(14, 0xFDF7BCAF, 1)                         Err#11 EAGAIN

24364/3:         3.7919 read(18, 0x00534910, 8)                         Err#11 EAGAIN

 
prstat –L –p <pid> shows:

   PID USERNAME  SIZE   RSS STATE  PRI NICE      TIME  CPU PROCESS/LWPID

 24364 radmin     21M   20M cpu1     0    0   0:45:52  49% dts/3

 24364 radmin     21M   20M sleep   59    0   0:00:00 0.0% dts/2

 24364 radmin     21M   20M sleep   59    0   0:00:00 0.0% dts/1


bash-3.00# pstack core

core 'core' of 24364:   /reuters/dts/servers/dts/sun4sol/sslbin/dts -vl -f /reuters/dts/server

-----------------  lwp# 1 / thread# 1  --------------------

 fe6c575c pollsys  (ffbfc898, 3, ffbfe900, 0)

 fe666cc0 pselect  (ffbfc898, fe6f2528, fe6f2528, 40, ffbfe900, 0) + 1c8

 fe667038 select   (400, ffbfe974, 0, 0, ffbfe96c, 2) + a0

 00078934 main     (323800, 323800, 323800, 338400, fe550980, fe5509c0) + 32c

 00075510 _start   (0, 0, 0, 0, 0, 0) + 108

-----------------  lwp# 2 / thread# 2  --------------------

 fe6c575c pollsys  (fe1f9c70, 2, fe1fbed8, 0)

 fe66734c pselect_large_fdset (fe1f9c80, 2, fe1f9e78, fe1f9e70, 10000, fe1fbe78) + 2ec

 fe667794 select_large_fdset (10000, 518ce8, 0, 0, 516cc0, fe0e0200) + a0

 fe246c18 __1cUSSLSnkDrv_DispatcherNstartMainLoop6M_v_ (fe28c701, 0, 0, 0, fe0e0200, 1) + a4

 fe25fd48 __1cJsslThread6Fpv_0_ (516c88, fe1fc000, 0, 0, fe25fd44, 1) + 4

 fe6c4990 _lwp_start (0, 0, 0, 0, 0, 0)

-----------------  lwp# 3 / thread# 3  --------------------

 fdfc88b4 __1cbASSLSrcDrv_DispatcherFDImplRbuildCandidateFDs6M_v_ (52ce28, 52eeac, 0, 0, 530eac, 52bd30) + fc

 fdfc864c __1cbASSLSrcDrv_DispatcherFDImplNstartMainLoop6M_v_ (52ce28, 0, ff000000, 0, 0, fe0e0a00) + 48

 fdfd8cbc __1cLthread_main6Fpv_0_ (52ce28, 0, 0, 0, fe0e0a00, 1) + 10

 fe940f5c __1cUITH_TreadFuncWrapper6Fpv_0_ (52bd70, fdf7c000, 0, 0, fe940f50, 1) + c

 fe6c4990 _lwp_start (0, 0, 0, 0, 0, 0)
 

core 'core' of 24364:   /reuters/dts/servers/dts/sun4sol/sslbin/dts -vl -f /reuters/dts/server

        data model = _ILP32  flags = RLC|MSACCT|MSFORK

 /1:    flags = STOPPED|ISTOP|ASLEEP  pollsys(0xffbfc898,0x3,0xffbfe900,0x0)

        why = PR_REQUESTED

 /2:    flags = STOPPED|ISTOP|ASLEEP  pollsys(0xfe1f9c70,0x2,0xfe1fbed8,0x0)

        why = PR_REQUESTED

 /3:    flags = STOPPED|ISTOP

        why = PR_REQUESTED

Leider weiss ich jetzt leider nicht mehr weiter, wo der Fehler wirklich liegen koennte.
Vielleicht weiss jemand ein wenig mehr aus den Informationen herauszubekommen.

Fuer jeden Tipp bin ich sehr dankbar!
 
man errno
=> EAGAIN Ressource zurzeit nicht verfügbar.

Der Prozess versucht mit aller gewalt etas zu lesen, was (noch) nicht verfügbar ist. Warten auf Socket von DB oder ähnliches.
Mit lsof -p <pid> kannst Du sehen, welcher Filedescriptor (14 und 18 ) wohin geht.
Mit einem allgemeinen lsof kannst Du eventuell sehen wlecher prozess den gleichen Node/Device oder Socket benutzt.

Ich würde mal behaupten die Programmierer haben vergessen in diesem (Idle?) Loop ein kleines Sleep von ein paar Millisekunden
einzubauen. ICh würde den Prozess mit renice weniger Priorität geben, z.B. renice 5 <pid>. Dann sollte der Rest wieder flüssiger gehen.

Haveaniceday
 
OP
B

byron1778

Hacker
Danke Dir vielmals für Deine Hilfe!
Werde ich sofort ausprobieren und dann Mitteilung geben, was dabei rausgekommen ist!
 
Oben