Alexander Burnos <[EMAIL PROTECTED]> wrote:
> Здравствуйте!

[....]

> Thread dump сделать не получается, потому что во-первых очень тяжело
> отловить такие моменты и сразу сделать thread dump, а во-вторых иногда
> просто не попасть на сервер во время такого лоада.

> Поэтому вопрос, может быть есть какой-то механизм вроде accounting'а,
> только который бы отслеживал что именно дергается в system context'е?
oprofile ?

или так:
2.10 Profiling the kernel

There are several facilities to see where the kernel spends its resources. A
simple one is the profiling function, that stores the current EIP
(instruction pointer) at each clock tick.

Boot the kernel with command line option profile=2 (or some other number
instead of 2). This will cause a file /proc/profile to be created. The
number given after profile= is the number of positions EIP is shifted right
when profiling. So a large number gives a coarse profile. The counters are
reset by writing to /proc/profile. The utility readprofile will output
statistics for you. It does not sort - you have to invoke sort explicitly.
But given a memory map it will translate addresses to kernel symbols.

See kernel/profile.c and fs/proc/proc_misc.c and readprofile(1).

For example:

    # echo > /proc/profile
    ...
    # readprofile -m System.map-2.5.59 | sort -nr | head -2
    510502 total                                      0.1534
    508548 default_idle                           10594.7500

The first column gives the number of timer ticks. The last column gives the
number of ticks divided by the size of the function.

The command readprofile -r is equivalent to echo > /proc/profile.

или kprobes


-- 
To UNSUBSCRIBE, email to [EMAIL PROTECTED]
with a subject of "unsubscribe". Trouble? Contact [EMAIL PROTECTED]

Ответить