166
POWER7 and Optimization and Tuning Guide
9907 266.1382 1.23% 0.0269 0.0143 0.5350 kpwrite(2a2d588)
34282 167.8132 0.77% 0.0049 0.0032 0.0204 _thread_wait(2a28778)
As a first step, compare the mix of system calls to the expectation of how the application is
expected to behave. Is the mix aligned with expectations? If not, first confirm that the trace is
collected while the wanted workload runs. If the trace is collected at the correct time and the
mix still differs from expectations, then investigate the application logic. Also, examine the list
of system calls for potential optimizations. For example, if
select
or
poll
is used frequently,
consider employing the pollset facility (see “pollset” on page 71).
As a further breakdown,
curt
provides a report of the system calls run by each thread. An
example report is shown in Example B-5.
Example B-5 system calls run by each thread
Report for Thread Id: 549305 (hex 861b9) Pid: 323930 (hex 4f15a)
Process Name: proc1
--------------------
Total Application Time (ms): 89.010297
Total System Call Time (ms): 160.465531
Total Hypervisor Call Time (ms): 18.303531
Thread System Call Summary
--------------------------
Count Total Time Avg Time Min Time Max Time SVC (Address)
(msec) (msec) (msec) (msec)
======== =========== ======== ======== ======== ================
492 157.0663 0.3192 0.0032 0.6596 listio64(516ea40)
494 3.3656 0.0068 0.0002 0.0163 GetMultipleCompletionStatus(549a6a8)
12 0.0238 0.0020 0.0017 0.0022 _thread_wait(2a28778)
6 0.0060 0.0010 0.0007 0.0014 thread_unlock(2a28838)
4 0.0028 0.0007 0.0005 0.0008 thread_post(2a288f8)
Another useful report that is provided by
curt
is the
Pending System Calls Summary
. This
summary shows the list of threads that are in an unfinished system call at the end of the
trace. An example report is given in Example B-6.
Example B-6 Threads that are in an unfinished system call at the end of the trace
Pending System Calls Summary
----------------------------
Accumulated SVC (Address)
Procname (Pid Tid)
Time (msec)
============ =========================
==========================
0.0082 GetMultipleCompletionStatus(549a6a8)
proc1(323930 532813)
0.0089 _nsleep(2a28d30)
proc2(270398 545277)
0.0054 _thread_wait(2a28778)
proc1(323930 549305)
0.0088 GetMultipleCompletionStatus(549a6a8)
proc1(323930 561437)
3.3981 listio64(516ea40)
proc1(323930 577917)
0.0130 kpwrite(2a2d588)
proc1(323930 794729)
For each thread in an unfinished system call, the following items are provided:
The accumulated time in the system call
The name of the system call (followed by the system call address in parentheses)
The process name, followed by the Process ID and Thread ID in parentheses
Summary of Contents for Power System POWER7 Series
Page 2: ......
Page 36: ...20 POWER7 and POWER7 Optimization and Tuning Guide...
Page 70: ...54 POWER7 and POWER7 Optimization and Tuning Guide...
Page 112: ...96 POWER7 and POWER7 Optimization and Tuning Guide...
Page 140: ...124 POWER7 and POWER7 Optimization and Tuning Guide...
Page 162: ...146 POWER7 and POWER7 Optimization and Tuning Guide...
Page 170: ...154 POWER7 and POWER7 Optimization and Tuning Guide...
Page 223: ......