lkml.org 
[lkml]   [2011]   [Jun]   [17]   [last100]   RSS Feed
Views: [wrap][no wrap]   [headers]  [forward] 
 
Messages in this thread
/
Date
From
SubjectRe: scheduler / perf stat question about CPU-migrations


On 06/16/2011 08:44 PM, Ted Ts'o wrote:
> On Thu, Jun 16, 2011 at 05:18:39PM +0200, Frederic Weisbecker wrote:
>> The only solution is too set perf affinity itself:
>>
>> schedtool -a 1 -e perf stat -- e2fsck -ft /dev/funarg/kbuild

I don't have schedtool, but I was able to repeat it with taskset:

taskset -pc 2 $$
perf stat -- e2fsck -ft <device>

where <device> is a 400G ext4 partition. First time through perf-stat
showed a number of migrations over the 134 second window. e2fsck runs
much quicker after the initial one, and migrations aren't showing up as
easily.

Try this:

perf record -Tg -e migrations -fo /tmp/perf.data -- schedtool -a 1 -e
perf stat -- e2fsck -ft /dev/funarg/kbuild

The outer perf-record will capture when the migrations occur. If you
don't mind recompiling perf, modify tools/perf/builtin-record.c and
force the capture of the cpu id on the samples. In config_attr() you want:

attr->sample_type |= PERF_SAMPLE_CPU;

On the captured data file run:
perf script -i /tmp/perf.data

You'll see something like this (captured on a run where I was able to
get 2 migrations):
e2fsck 2069 [002] 210.671401: CPU-migrations:
ffffffff81045a7b set_task_cpu ([kern
e2fsck 2069 [002] 213.675785: CPU-migrations:
ffffffff81045a7b set_task_cpu ([kern

David


>
> Nope, that doesn't solve the problem:
>
> # schedtool -a 1 -e perf stat -- e2fsck -ft /dev/funarg/kbuild
> e2fsck 1.41.14 (22-Dec-2010)
> Pass 1: Checking inodes, blocks, and sizes
> Pass 2: Checking directory structure
> Pass 3: Checking directory connectivity
> Pass 4: Checking reference counts
> Pass 5: Checking group summary information
> /dev/funarg/kbuild: 223466/1638400 files (0.3% non-contiguous), 4915668/6553600 blocks
> Memory used: 2600k/0k (1069k/1532k), time: 6.72/ 1.18/ 0.36
> I/O read: 137MB, write: 1MB, rate: 20.38MB/s
>
> Performance counter stats for 'e2fsck -ft /dev/funarg/kbuild':
>
> 1523.616797 task-clock # 0.224 CPUs utilized
> 7227 context-switches # 0.005 M/sec
> 253 CPU-migrations # 0.000 M/sec
> 1936 page-faults # 0.001 M/sec
> 4176409631 cycles # 2.741 GHz
> <not counted> stalled-cycles-frontend
> <not counted> stalled-cycles-backend
> 4828485353 instructions # 1.16 insns per cycle
> 877742160 branches # 576.091 M/sec
> 8017490 branch-misses # 0.91% of all branches
>
> 6.798746204 seconds time elapsed
>
> Note the 253 CPU migration....
>
> - Ted
> --
> To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
> the body of a message to majordomo@vger.kernel.org
> More majordomo info at http://vger.kernel.org/majordomo-info.html
> Please read the FAQ at http://www.tux.org/lkml/


\
 
 \ /
  Last update: 2011-06-17 08:01    [W:3.264 / U:0.024 seconds]
©2003-2020 Jasper Spaans|hosted at Digital Ocean and TransIP|Read the blog|Advertise on this site