Sziasztok,
Van egy ruby alkalmazás ami egy Ubuntu 12.04 szerveren fut. Az alkalmazás egy elég nagy "load average"-ot generál (5 és 15 között mozog).
Ha futtatom a "top" parancsot a Cpu(s) sorban a "sy: system cpu time (or) % CPU time spent in kernel space" érték a legmagasabb (30% - 50%).
Strace-al debugoltam a ruby alkalmazást (pld: strace -p ruby_pid):
futex(0x2233f64, FUTEX_WAIT_PRIVATE, 3502868, NULL) = -1 EAGAIN (Resource temporarily unavailable)
futex(0x2233f64, FUTEX_WAIT_PRIVATE, 3502870, NULL) = 0
futex(0x2233f30, FUTEX_WAKE_PRIVATE, 1) = 0
futex(0x2233f60, FUTEX_WAKE_PRIVATE, 1) = 1
futex(0x2233f64, FUTEX_WAIT_PRIVATE, 3502922, NULL) = -1 EAGAIN (Resource temporarily unavailable)
futex(0x2233f64, FUTEX_WAIT_PRIVATE, 3502925, NULL) = 0
futex(0x2233f30, FUTEX_WAKE_PRIVATE, 1) = 0
futex(0x2233f64, FUTEX_WAIT_PRIVATE, 3502963, NULL) = 0
futex(0x2233f30, FUTEX_WAKE_PRIVATE, 1) = 0
stat("/home/blux/blux/tmp/blux_stop.txt", 0x7fff1b5e58d0) = -1 ENOENT (No such file or directory)
futex(0x2233f64, FUTEX_WAKE_OP_PRIVATE, 1, 1, 0x2233f60, {FUTEX_OP_SET, 0, FUTEX_OP_CMP_GT, 1}) = 1
futex(0x2233f30, FUTEX_WAKE_PRIVATE, 1) = 1
futex(0x22345b4, FUTEX_WAIT_BITSET_PRIVATE, 4079, {3173, 814486682}, ffffffff) = -1 ETIMEDOUT (Connection timed out)
futex(0x2234618, FUTEX_WAKE_PRIVATE, 1) = 0
futex(0x2233f64, FUTEX_WAIT_PRIVATE, 3504570, NULL) = 0
futex(0x2233f30, FUTEX_WAKE_PRIVATE, 1) = 0
futex(0x2233f60, FUTEX_WAKE_PRIVATE, 1) = 1
futex(0x2233f64, FUTEX_WAIT_PRIVATE, 3504580, NULL) = 0
futex(0x2233f30, FUTEX_WAKE_PRIVATE, 1) = 0
futex(0x2233f64, FUTEX_WAIT_PRIVATE, 3504594, NULL) = 0
futex(0x2233f30, FUTEX_WAKE_PRIVATE, 1) = 0
futex(0x2233f60, FUTEX_WAKE_PRIVATE, 1) = 1
futex(0x2233f64, FUTEX_WAIT_PRIVATE, 3504608, NULL) = 0
futex(0x2233f30, FUTEX_WAKE_PRIVATE, 1) = 0
futex(0x2233f60, FUTEX_WAKE_PRIVATE, 1) = 1
futex(0x2233f64, FUTEX_WAIT_PRIVATE, 3504613, NULL) = 0
futex(0x2233f30, FUTEX_WAKE_PRIVATE, 1) = 1
futex(0x2233f60, FUTEX_WAKE_PRIVATE, 1) = 1
futex(0x2233f64, FUTEX_WAIT_PRIVATE, 3504616, NULL) = -1 EAGAIN (Resource temporarily unavailable)
futex(0x2233f64, FUTEX_WAIT_PRIVATE, 3504618, NULL) = 0
futex(0x2233f30, FUTEX_WAIT_PRIVATE, 2, NULL) = -1 EAGAIN (Resource temporarily unavailable)
futex(0x2233f30, FUTEX_WAKE_PRIVATE, 1) = 0
futex(0x2233f60, FUTEX_WAKE_PRIVATE, 1) = 1
futex(0x2233f64, FUTEX_WAIT_PRIVATE, 3504631, NULL) = -1 EAGAIN (Resource temporarily unavailable)
futex(0x2233f30, FUTEX_WAKE_PRIVATE, 1) = 0
futex(0x2233f60, FUTEX_WAKE_PRIVATE, 1) = 1
futex(0x2233f64, FUTEX_WAIT_PRIVATE, 3504635, NULL) = -1 EAGAIN (Resource temporarily unavailable)
futex(0x2233f30, FUTEX_WAKE_PRIVATE, 1) = 0
stat("/home/blux/blux/tmp/blux_stop.txt", 0x7fff1b5e58d0) = -1 ENOENT (No such file or directory)
futex(0x2233f64, FUTEX_WAKE_OP_PRIVATE, 1, 1, 0x2233f60, {FUTEX_OP_SET, 0, FUTEX_OP_CMP_GT, 1}) = 1
futex(0x2233f30, FUTEX_WAKE_PRIVATE, 1) = 1
futex(0x22345b4, FUTEX_WAIT_BITSET_PRIVATE, 4081, {3174, 376851775}, ffffffff) = -1 ETIMEDOUT (Connection timed out)
futex(0x2234618, FUTEX_WAKE_PRIVATE, 1) = 0
futex(0x2233f64, FUTEX_WAIT_PRIVATE, 3504758, NULL) = -1 EAGAIN (Resource temporarily unavailable)
futex(0x2233f64, FUTEX_WAIT_PRIVATE, 3504761, NULL) = 0
futex(0x2233f30, FUTEX_WAKE_PRIVATE, 1) = 0
futex(0x2233f60, FUTEX_WAKE_PRIVATE, 1) = 1
futex(0x2233f64, FUTEX_WAIT_PRIVATE, 3504806, NULL) = -1 EAGAIN (Resource temporarily unavailable)
futex(0x2233f30, FUTEX_WAKE_PRIVATE, 1) = 0
futex(0x2233f60, FUTEX_WAKE_PRIVATE, 1) = 1
futex(0x2233f64, FUTEX_WAIT_PRIVATE, 3504846, NULL) = -1 EAGAIN (Resource temporarily unavailable)
futex(0x2233f64, FUTEX_WAIT_PRIVATE, 3504848, NULL) = 0
futex(0x2233f30, FUTEX_WAKE_PRIVATE, 1) = 0
futex(0x2233f64, FUTEX_WAIT_PRIVATE, 3504887, NULL) = 0
futex(0x2233f30, FUTEX_WAIT_PRIVATE, 2, NULL) = -1 EAGAIN (Resource temporarily unavailable)
futex(0x2233f30, FUTEX_WAKE_PRIVATE, 1) = 0
futex(0x2233f60, FUTEX_WAKE_PRIVATE, 1) = 1
futex(0x2233f64, FUTEX_WAIT_PRIVATE, 3504916, NULL) = 0
futex(0x2233f30, FUTEX_WAKE_PRIVATE, 1) = 0
futex(0x2233f64, FUTEX_WAIT_PRIVATE, 3504952, NULL) = 0
futex(0x2233f30, FUTEX_WAKE_PRIVATE, 1) = 0
futex(0x2233f60, FUTEX_WAKE_PRIVATE, 1) = 1
futex(0x2233f64, FUTEX_WAIT_PRIVATE, 3505007, NULL) = 0
futex(0x2233f30, FUTEX_WAKE_PRIVATE, 1) = 0
futex(0x2233f64, FUTEX_WAIT_PRIVATE, 3505027, NULL) = 0
futex(0x2233f30, FUTEX_WAKE_PRIVATE, 1) = 0
futex(0x2233f60, FUTEX_WAKE_PRIVATE, 1) = 1
futex(0x2233f64, FUTEX_WAIT_PRIVATE, 3505057, NULL) = -1 EAGAIN (Resource temporarily unavailable)
futex(0x2233f30, FUTEX_WAKE_PRIVATE, 1) = 0
futex(0x2233f60, FUTEX_WAKE_PRIVATE, 1) = 1
futex(0x2233f64, FUTEX_WAIT_PRIVATE, 3505059, NULL) = -1 EAGAIN (Resource temporarily unavailable)
futex(0x2233f30, FUTEX_WAKE_PRIVATE, 1) = 0
futex(0x2233f60, FUTEX_WAKE_PRIVATE, 1) = 1
futex(0x2233f64, FUTEX_WAIT_PRIVATE, 3505061, NULL) = -1 EAGAIN (Resource temporarily unavailable)
futex(0x2233f30, FUTEX_WAKE_PRIVATE, 1) = 0
futex(0x2233f60, FUTEX_WAKE_PRIVATE, 1) = 1
futex(0x2233f64, FUTEX_WAIT_PRIVATE, 3505065, NULL) = -1 EAGAIN (Resource temporarily unavailable)
futex(0x2233f30, FUTEX_WAKE_PRIVATE, 1) = 1
futex(0x2233f60, FUTEX_WAKE_PRIVATE, 1) = 1
futex(0x2233f64, FUTEX_WAIT_PRIVATE, 3505069, NULL) = -1 EAGAIN (Resource temporarily unavailable)
futex(0x2233f30, FUTEX_WAKE_PRIVATE, 1) = 1
futex(0x2233f60, FUTEX_WAKE_PRIVATE, 1) = 1
futex(0x2233f64, FUTEX_WAIT_PRIVATE, 3505073, NULL) = -1 EAGAIN (Resource temporarily unavailable)
futex(0x2233f30, FUTEX_WAKE_PRIVATE, 1) = 1
futex(0x2233f60, FUTEX_WAKE_PRIVATE, 1) = 1
futex(0x2233f64, FUTEX_WAIT_PRIVATE, 3505081, NULL) = -1 EAGAIN (Resource temporarily unavailable)
futex(0x2233f30, FUTEX_WAKE_PRIVATE, 1) = 1
futex(0x2233f60, FUTEX_WAKE_PRIVATE, 1) = 1
futex(0x2233f64, FUTEX_WAIT_PRIVATE, 3505085, NULL) = -1 EAGAIN (Resource temporarily unavailable)
futex(0x2233f30, FUTEX_WAKE_PRIVATE, 1) = 1
futex(0x2233f60, FUTEX_WAKE_PRIVATE, 1) = 1
futex(0x2233f64, FUTEX_WAIT_PRIVATE, 3505089, NULL) = -1 EAGAIN (Resource temporarily unavailable)
futex(0x2233f60, FUTEX_WAIT_PRIVATE, 2, NULL) = -1 EAGAIN (Resource temporarily unavailable)
futex(0x2233f60, FUTEX_WAKE_PRIVATE, 1) = 0
futex(0x2233f30, FUTEX_WAKE_PRIVATE, 1) = 0
futex(0x2233f60, FUTEX_WAKE_PRIVATE, 1) = 1
futex(0x2233f64, FUTEX_WAIT_PRIVATE, 3505104, NULL) = -1 EAGAIN (Resource temporarily unavailable)
futex(0x2233f30, FUTEX_WAKE_PRIVATE, 1) = 0
futex(0x2233f60, FUTEX_WAKE_PRIVATE, 1) = 1
futex(0x2233f64, FUTEX_WAIT_PRIVATE, 3505108, NULL) = 0
futex(0x2233f30, FUTEX_WAKE_PRIVATE, 1) = 1
futex(0x2233f60, FUTEX_WAKE_PRIVATE, 1) = 1
futex(0x2233f64, FUTEX_WAIT_PRIVATE, 3505115, NULL) = -1 EAGAIN (Resource temporarily unavailable)
futex(0x2233f30, FUTEX_WAKE_PRIVATE, 1) = 1
futex(0x2233f60, FUTEX_WAKE_PRIVATE, 1) = 1
futex(0x2233f64, FUTEX_WAIT_PRIVATE, 3505117, NULL) = -1 EAGAIN (Resource temporarily unavailable)
futex(0x2233f30, FUTEX_WAKE_PRIVATE, 1) = 1
futex(0x2233f60, FUTEX_WAKE_PRIVATE, 1) = 1
futex(0x2233f64, FUTEX_WAIT_PRIVATE, 3505119, NULL) = -1 EAGAIN (Resource temporarily unavailable)
futex(0x2233f30, FUTEX_WAKE_PRIVATE, 1) = 1
futex(0x2233f60, FUTEX_WAKE_PRIVATE, 1) = 1
futex(0x2233f64, FUTEX_WAIT_PRIVATE, 3505121, NULL) = -1 EAGAIN (Resource temporarily unavailable)
futex(0x2233f30, FUTEX_WAKE_PRIVATE, 1) = 1
futex(0x2233f60, FUTEX_WAKE_PRIVATE, 1) = 1
futex(0x2233f64, FUTEX_WAIT_PRIVATE, 3505123, NULL) = -1 EAGAIN (Resource temporarily unavailable)
futex(0x2233f30, FUTEX_WAKE_PRIVATE, 1) = 1
futex(0x2233f60, FUTEX_WAKE_PRIVATE, 1) = 1
futex(0x2233f64, FUTEX_WAIT_PRIVATE, 3505125, NULL) = -1 EAGAIN (Resource temporarily unavailable)
futex(0x2233f30, FUTEX_WAIT_PRIVATE, 2, NULL) = -1 EAGAIN (Resource temporarily unavailable)
futex(0x2233f30, FUTEX_WAIT_PRIVATE, 2, NULL) = -1 EAGAIN (Resource temporarily unavailable)
futex(0x2233f30, FUTEX_WAKE_PRIVATE, 1) = 0
futex(0x2233f60, FUTEX_WAKE_PRIVATE, 1) = 1
futex(0x2233f64, FUTEX_WAIT_PRIVATE, 3505146, NULL) = -1 EAGAIN (Resource temporarily unavailable)
futex(0x2233f30, FUTEX_WAKE_PRIVATE, 1) = 0
futex(0x2233f60, FUTEX_WAKE_PRIVATE, 1) = 1
futex(0x2233f64, FUTEX_WAIT_PRIVATE, 3505150, NULL) = -1 EAGAIN (Resource temporarily unavailable)
futex(0x2233f30, FUTEX_WAKE_PRIVATE, 1) = 1
futex(0x2233f60, FUTEX_WAKE_PRIVATE, 1) = 1
futex(0x2233f64, FUTEX_WAIT_PRIVATE, 3505153, NULL) = -1 EAGAIN (Resource temporarily unavailable)
futex(0x2233f30, FUTEX_WAKE_PRIVATE, 1) = 1
futex(0x2233f60, FUTEX_WAKE_PRIVATE, 1) = 1
futex(0x2233f64, FUTEX_WAIT_PRIVATE, 3505155, NULL) = -1 EAGAIN (Resource temporarily unavailable)
futex(0x2233f30, FUTEX_WAKE_PRIVATE, 1) = 1
futex(0x2233f60, FUTEX_WAKE_PRIVATE, 1) = 1
futex(0x2233f64, FUTEX_WAIT_PRIVATE, 3505159, NULL) = 0
futex(0x2233f30, FUTEX_WAKE_PRIVATE, 1) = 1
futex(0x2233f60, FUTEX_WAKE_PRIVATE, 1) = 1
futex(0x2233f64, FUTEX_WAIT_PRIVATE, 3505163, NULL) = -1 EAGAIN (Resource temporarily unavailable)
futex(0x2233f30, FUTEX_WAKE_PRIVATE, 1) = 1
stat("/home/blux/blux/tmp/blux_stop.txt", 0x7fff1b5e58d0) = -1 ENOENT (No such file or directory)
stat("/home/blux/.aprc", 0x7fff1b5e5500) = -1 ENOENT (No such file or directory)
ioctl(1, SNDCTL_TMR_TIMEBASE or TCGETS, 0x7fff1b5e58d8) = -1 ENOTTY (Inappropriate ioctl for device)
stat("/etc/localtime", {st_mode=S_IFREG|0644, st_size=2917, ...}) = 0
futex(0x2233f64, FUTEX_WAKE_OP_PRIVATE, 1, 1, 0x2233f60, {FUTEX_OP_SET, 0, FUTEX_OP_CMP_GT, 1}) = 1
ppoll([{fd=1, events=POLLOUT}], 1, NULL, NULL, 8) = 1 ([{fd=1, revents=POLLOUT}])
futex(0x2233f64, FUTEX_WAIT_PRIVATE, 3505184, NULL) = -1 EAGAIN (Resource temporarily unavailable)
futex(0x2233f30, FUTEX_WAKE_PRIVATE, 1) = 0
futex(0x2233f60, FUTEX_WAKE_PRIVATE, 1) = 1
futex(0x2233f64, FUTEX_WAIT_PRIVATE, 3505188, NULL) = -1 EAGAIN (Resource temporarily unavailable)
futex(0x2233f30, FUTEX_WAKE_PRIVATE, 1) = 0
futex(0x2233f60, FUTEX_WAKE_PRIVATE, 1) = 0
futex(0x2233f64, FUTEX_WAIT_PRIVATE, 3505192, NULL) = -1 EAGAIN (Resource temporarily unavailable)
futex(0x2233f30, FUTEX_WAKE_PRIVATE, 1) = 1
futex(0x2233f60, FUTEX_WAKE_PRIVATE, 1) = 1
futex(0x2233f64, FUTEX_WAIT_PRIVATE, 3505199, NULL) = -1 EAGAIN (Resource temporarily unavailable)
futex(0x2233f30, FUTEX_WAKE_PRIVATE, 1) = 1
futex(0x2233f60, FUTEX_WAKE_PRIVATE, 1) = 1
futex(0x2233f64, FUTEX_WAIT_PRIVATE, 3505203, NULL) = 0
futex(0x2233f30, FUTEX_WAKE_PRIVATE, 1) = 1
futex(0x2233f60, FUTEX_WAKE_PRIVATE, 1) = 1
futex(0x2233f64, FUTEX_WAIT_PRIVATE, 3505205, NULL) = -1 EAGAIN (Resource temporarily unavailable)
futex(0x2233f30, FUTEX_WAKE_PRIVATE, 1) = 1
futex(0x2233f60, FUTEX_WAKE_PRIVATE, 1) = 1
futex(0x2233f64, FUTEX_WAIT_PRIVATE, 3505207, NULL) = -1 EAGAIN (Resource temporarily unavailable)
futex(0x2233f30, FUTEX_WAKE_PRIVATE, 1) = 1
futex(0x2233f60, FUTEX_WAKE_PRIVATE, 1) = 1
futex(0x2233f64, FUTEX_WAIT_PRIVATE, 3505209, NULL) = -1 EAGAIN (Resource temporarily unavailable)
futex(0x2233f30, FUTEX_WAKE_PRIVATE, 1) = 1
futex(0x2233f60, FUTEX_WAKE_PRIVATE, 1) = 1
futex(0x2233f64, FUTEX_WAIT_PRIVATE, 3505211, NULL) = -1 EAGAIN (Resource temporarily unavailable)
futex(0x2233f30, FUTEX_WAKE_PRIVATE, 1) = 1
futex(0x2233f60, FUTEX_WAKE_PRIVATE, 1) = 1
futex(0x2233f64, FUTEX_WAIT_PRIVATE, 3505213, NULL) = -1 EAGAIN (Resource temporarily unavailable)
futex(0x2233f30, FUTEX_WAKE_PRIVATE, 1) = 1
futex(0x2233f60, FUTEX_WAKE_PRIVATE, 1) = 1
futex(0x2233f64, FUTEX_WAIT_PRIVATE, 3505215, NULL) = -1 EAGAIN (Resource temporarily unavailable)
futex(0x2233f30, FUTEX_WAKE_PRIVATE, 1) = 1
futex(0x2233f60, FUTEX_WAKE_PRIVATE, 1) = 1
futex(0x2233f64, FUTEX_WAIT_PRIVATE, 3505217, NULL) = -1 EAGAIN (Resource temporarily unavailable)
futex(0x2233f30, FUTEX_WAKE_PRIVATE, 1) = 1
futex(0x2233f60, FUTEX_WAKE_PRIVATE, 1) = 1
futex(0x2233f64, FUTEX_WAIT_PRIVATE, 3505219, NULL) = -1 EAGAIN (Resource temporarily unavailable)
futex(0x2233f30, FUTEX_WAKE_PRIVATE, 1) = 1
futex(0x2233f60, FUTEX_WAKE_PRIVATE, 1) = 1
futex(0x2233f64, FUTEX_WAIT_PRIVATE, 3505221, NULL) = -1 EAGAIN (Resource temporarily unavailable)
futex(0x2233f30, FUTEX_WAKE_PRIVATE, 1) = 1
futex(0x2233f60, FUTEX_WAKE_PRIVATE, 1) = 1
futex(0x2233f64, FUTEX_WAIT_PRIVATE, 3505223, NULL) = -1 EAGAIN (Resource temporarily unavailable)
futex(0x2233f30, FUTEX_WAKE_PRIVATE, 1) = 1
futex(0x2233f60, FUTEX_WAKE_PRIVATE, 1) = 1
futex(0x2233f64, FUTEX_WAIT_PRIVATE, 3505225, NULL) = -1 EAGAIN (Resource temporarily unavailable)
futex(0x2233f30, FUTEX_WAKE_PRIVATE, 1) = 1
futex(0x2233f60, FUTEX_WAKE_PRIVATE, 1) = 1
futex(0x2233f64, FUTEX_WAIT_PRIVATE, 3505227, NULL) = -1 EAGAIN (Resource temporarily unavailable)
futex(0x2233f30, FUTEX_WAKE_PRIVATE, 1) = 1
futex(0x2233f60, FUTEX_WAKE_PRIVATE, 1) = 1
futex(0x2233f64, FUTEX_WAIT_PRIVATE, 3505229, NULL) = -1 EAGAIN (Resource temporarily unavailable)
futex(0x2233f30, FUTEX_WAKE_PRIVATE, 1) = 1
futex(0x2233f60, FUTEX_WAKE_PRIVATE, 1) = 1
futex(0x2233f64, FUTEX_WAIT_PRIVATE, 3505231, NULL) = -1 EAGAIN (Resource temporarily unavailable)
futex(0x2233f30, FUTEX_WAKE_PRIVATE, 1) = 1
futex(0x2233f30, FUTEX_WAIT_PRIVATE, 2, NULL) = -1 EAGAIN (Resource temporarily unavailable)
futex(0x2233f64, FUTEX_WAKE_OP_PRIVATE, 1, 1, 0x2233f60, {FUTEX_OP_SET, 0, FUTEX_OP_CMP_GT, 1}) = 1
futex(0x2233f30, FUTEX_WAKE_PRIVATE, 1) = 0
futex(0x69687ec, FUTEX_WAIT_PRIVATE, 18581, NULL^C
strace -c -p ruby_pid
% time seconds usecs/call calls errors syscall
------ ----------- ----------- --------- --------- ----------------
100.00 4.817657 14170 340 71 futex
0.00 0.000000 0 1 write
0.00 0.000000 0 6 5 stat
0.00 0.000000 0 1 1 ioctl
0.00 0.000000 0 1 ppoll
------ ----------- ----------- --------- --------- ----------------
100.00 4.817657 349 77 total
Amint látható nagyon sok a "futex" system call. Tudna valaki segíteni a fenti debug logot megfejteni?
- 695 megtekintés