Hello,

I am using perfmon2 on IBM POWER5.
The version I am using is libpfm 3.8 with kernel 2.6.28 (February
19th, 2009 release).

My problem is that between two consecutives readings of the counters I
get decreasing values. For instance, I want to read the number of
misses in L2, so I read the counter PM_DATA_FROM_L2MISS. In reading
'i' I get 59695 and in reading 'i+1' I get 59637.

I am wondering if this is a bug or it is some sort of limitation.
However, in my opinion it looks like a bug.

In order to understand what was going on, I modified the kernel to
print some messages. In the log at the end of the mail the meaning of
the fields in every line is:

pfm_xxx : the function from where the message is printed
pid : pid of the process which is printing the message
task : parameter task which is present in some perfmon2 functions
ctx : parameter/variable task which is present in some perfmon2 functions
cnum : counter number
value : value which is being written into the PMDS
result : value readed from the PMDS

About the pid field, in my experiment I am running two processes
(2488, 2489) only 2489 is using perfmon2 (i.e., there is only one
pfm_context).

In my opinion, the problem comes because perfmon2 sometimes does not
save PMDS right before a context switch.

For instance, in the next log, at line 1 process 2489 is switched out
and in line 6 and 8 pfm_save_pmds is called. The value which is being
saved for counter 3 is 58339. At line 20 the user reads the counter
with the call to sys_pfm_read_pmds and the value returned is 59695.

The problem is that at line 26 when process 2489 is switched out
again, the PMDS are not saved. And they are being restored at line 30
with the old value which was saved before (58339).

After that, the counters keep increasing until we read them again at
line 103. The value read there is 59637, which is smaller than the
previous reading (59695).

Here is the log:

1   May 19 15:35:42 op710n3 kernel: pfm_arch_ctxswout_thread pid=2489
task=c0000000e835d5e0 ctx=c0000000e6968000
2   May 19 15:35:42 op710n3 kernel: pfm_power5_disable_counters
pid=2489 ctx=c0000000e6968000
3   May 19 15:35:42 op710n3 kernel: pfm_power5_read_pmd pid=2489
cnum=2 result=23
4   May 19 15:35:42 op710n3 kernel: pfm_power5_read_pmd pid=2489
cnum=3 result=58339
5   May 19 15:35:42 op710n3 kernel: pfm_power5_read_pmd pid=2489
cnum=2 result=23
6   May 19 15:35:42 op710n3 kernel: pfm_save_pmds pid=2489
ctx=c0000000e6968000 cnum=2 value=23
7   May 19 15:35:42 op710n3 kernel: pfm_power5_read_pmd pid=2489
cnum=3 result=58339
8   May 19 15:35:42 op710n3 kernel: pfm_save_pmds pid=2489
ctx=c0000000e6968000 cnum=3 value=58339
9   May 19 15:35:42 op710n3 kernel: pfm_power5_write_pmd pid=2489 cnum=2 value=0
10  May 19 15:35:42 op710n3 kernel: pfm_power5_write_pmd pid=2489 cnum=3 value=0
11  May 19 15:35:42 op710n3 kernel: pfm_arch_restore_pmds pid=17
ctx=c0000000e6968000
12  May 19 15:35:42 op710n3 kernel: pfm_power5_write_pmd pid=17 cnum=2 value=23
13  May 19 15:35:42 op710n3 kernel: pfm_power5_write_pmd pid=17 cnum=3
value=58339
14  May 19 15:35:42 op710n3 kernel: pfm_arch_ctxswin_thread pid=17
task=c0000000e835d5e0 ctx=c0000000e6968000
15  May 19 15:35:42 op710n3 kernel: pfm_power5_enable_counters pid=17
ctx=c0000000e6968000
16  May 19 15:35:42 op710n3 kernel: pfm_power5_disable_counters pid=17
ctx=c0000000e6968000
17  May 19 15:35:42 op710n3 kernel: pfm_power5_disable_counters
pid=2489 ctx=c0000000e6968000
18  May 19 15:35:42 op710n3 kernel: pfm_power5_read_pmd pid=2489
cnum=2 result=23
19  May 19 15:35:42 op710n3 kernel: pfm_power5_read_pmd pid=2489
cnum=3 result=59695

## 1st reading

20  May 19 15:35:42 op710n3 kernel: sys_pfm_read_pmds pid=2489
ctx=c0000000e6968000
21  May 19 15:35:42 op710n3 kernel: __pfm_read_pmds pid=2489
ctx=c0000000e6968000
22  May 19 15:35:42 op710n3 kernel: pfm_power5_read_pmd pid=2489
cnum=3 result=59695
23  May 19 15:35:42 op710n3 kernel: __pfm_read_pmds pid=2489 cnum=3
val=59695 last_reset_val=0
24  May 19 15:35:42 op710n3 kernel: pfm_power5_read_pmd pid=2489
cnum=2 result=23
25  May 19 15:35:42 op710n3 kernel: __pfm_read_pmds pid=2489 cnum=2
val=23 last_reset_val=0

## value for counter 3 is 59695

26  May 19 15:35:42 op710n3 kernel: pfm_arch_ctxswout_thread pid=2489
task=c0000000e835d5e0 ctx=c0000000e6968000
27  May 19 15:35:42 op710n3 kernel: pfm_power5_disable_counters
pid=2489 ctx=c0000000e6968000
28  May 19 15:35:42 op710n3 kernel: pfm_power5_read_pmd pid=2489
cnum=2 result=23
29  May 19 15:35:42 op710n3 kernel: pfm_power5_read_pmd pid=2489
cnum=3 result=59695
30  May 19 15:35:42 op710n3 kernel: pfm_arch_restore_pmds pid=2488
ctx=c0000000e6968000
31  May 19 15:35:42 op710n3 kernel: pfm_power5_write_pmd pid=2488
cnum=2 value=23
32  May 19 15:35:42 op710n3 kernel: pfm_power5_write_pmd pid=2488
cnum=3 value=58339
33  May 19 15:35:42 op710n3 kernel: pfm_arch_ctxswin_thread pid=2488
task=c0000000e835d5e0 ctx=c0000000e6968000
34  May 19 15:35:42 op710n3 kernel: pfm_power5_enable_counters
pid=2489 ctx=c0000000e6968000
35  May 19 15:35:42 op710n3 kernel: pfm_power5_disable_counters
pid=2489 ctx=c0000000e6968000
36  May 19 15:35:42 op710n3 kernel: pfm_arch_ctxswout_thread pid=2489
task=c0000000e835d5e0 ctx=c0000000e6968000
37  May 19 15:35:42 op710n3 kernel: pfm_power5_disable_counters
pid=2489 ctx=c0000000e6968000
38  May 19 15:35:42 op710n3 kernel: pfm_power5_read_pmd pid=2489
cnum=2 result=23
39  May 19 15:35:42 op710n3 kernel: pfm_power5_read_pmd pid=2489
cnum=3 result=58385
40  May 19 15:35:42 op710n3 kernel: pfm_power5_read_pmd pid=2489
cnum=2 result=23
41  May 19 15:35:42 op710n3 kernel: pfm_save_pmds pid=2489
ctx=c0000000e6968000 cnum=2 value=23
42  May 19 15:35:42 op710n3 kernel: pfm_power5_read_pmd pid=2489
cnum=3 result=58385
43  May 19 15:35:42 op710n3 kernel: pfm_save_pmds pid=2489
ctx=c0000000e6968000 cnum=3 value=58385
44  May 19 15:35:42 op710n3 kernel: pfm_power5_write_pmd pid=2489 cnum=2 value=0
45  May 19 15:35:42 op710n3 kernel: pfm_power5_write_pmd pid=2489 cnum=3 value=0
46  May 19 15:35:42 op710n3 kernel: pfm_arch_restore_pmds pid=645
ctx=c0000000e6968000
47  May 19 15:35:42 op710n3 kernel: pfm_power5_write_pmd pid=645 cnum=2 value=23
48  May 19 15:35:42 op710n3 kernel: pfm_power5_write_pmd pid=645
cnum=3 value=58385
49  May 19 15:35:42 op710n3 kernel: pfm_arch_ctxswin_thread pid=645
task=c0000000e835d5e0 ctx=c0000000e6968000
50  May 19 15:35:42 op710n3 kernel: pfm_power5_enable_counters pid=645
ctx=c0000000e6968000
51  May 19 15:35:42 op710n3 kernel: pfm_power5_disable_counters
pid=645 ctx=c0000000e6968000
52  May 19 15:35:42 op710n3 kernel: pfm_arch_ctxswout_thread pid=2489
task=c0000000e835d5e0 ctx=c0000000e6968000
53  May 19 15:35:42 op710n3 kernel: pfm_power5_disable_counters
pid=2489 ctx=c0000000e6968000
54  May 19 15:35:42 op710n3 kernel: pfm_power5_read_pmd pid=2489
cnum=2 result=23
55  May 19 15:35:42 op710n3 kernel: pfm_power5_read_pmd pid=2489
cnum=3 result=58896
56  May 19 15:35:42 op710n3 kernel: pfm_power5_read_pmd pid=2489
cnum=2 result=23
57  May 19 15:35:42 op710n3 kernel: pfm_save_pmds pid=2489
ctx=c0000000e6968000 cnum=2 value=23
58  May 19 15:35:42 op710n3 kernel: pfm_power5_read_pmd pid=2489
cnum=3 result=58896
59  May 19 15:35:42 op710n3 kernel: pfm_save_pmds pid=2489
ctx=c0000000e6968000 cnum=3 value=58896
60  May 19 15:35:42 op710n3 kernel: pfm_power5_write_pmd pid=2489 cnum=2 value=0
61  May 19 15:35:42 op710n3 kernel: pfm_power5_write_pmd pid=2489 cnum=3 value=0
62  May 19 15:35:42 op710n3 kernel: pfm_arch_restore_pmds pid=2487
ctx=c0000000e6968000
63  May 19 15:35:42 op710n3 kernel: pfm_power5_write_pmd pid=2487
cnum=2 value=23
64  May 19 15:35:42 op710n3 kernel: pfm_power5_write_pmd pid=2487
cnum=3 value=58896
65  May 19 15:35:42 op710n3 kernel: pfm_arch_ctxswin_thread pid=2487
task=c0000000e835d5e0 ctx=c0000000e6968000
66  May 19 15:35:42 op710n3 kernel: pfm_power5_enable_counters
pid=2487 ctx=c0000000e6968000
67  May 19 15:35:42 op710n3 kernel: pfm_power5_disable_counters
pid=2487 ctx=c0000000e6968000
68  May 19 15:35:42 op710n3 kernel: pfm_arch_ctxswout_thread pid=2489
task=c0000000e835d5e0 ctx=c0000000e6968000
69  May 19 15:35:42 op710n3 kernel: pfm_power5_disable_counters
pid=2489 ctx=c0000000e6968000
70  May 19 15:35:42 op710n3 kernel: pfm_power5_read_pmd pid=2489
cnum=2 result=23
71  May 19 15:35:42 op710n3 kernel: pfm_power5_read_pmd pid=2489
cnum=3 result=59251
72  May 19 15:35:42 op710n3 kernel: pfm_power5_read_pmd pid=2489
cnum=2 result=23
73  May 19 15:35:42 op710n3 kernel: pfm_save_pmds pid=2489
ctx=c0000000e6968000 cnum=2 value=23
74  May 19 15:35:42 op710n3 kernel: pfm_power5_read_pmd pid=2489
cnum=3 result=59251
75  May 19 15:35:42 op710n3 kernel: pfm_save_pmds pid=2489
ctx=c0000000e6968000 cnum=3 value=59251
76  May 19 15:35:42 op710n3 kernel: pfm_power5_write_pmd pid=2489 cnum=2 value=0
77  May 19 15:35:42 op710n3 kernel: pfm_power5_write_pmd pid=2489 cnum=3 value=0
78  May 19 15:35:42 op710n3 kernel: pfm_arch_restore_pmds pid=2485
ctx=c0000000e6968000
79  May 19 15:35:42 op710n3 kernel: pfm_power5_write_pmd pid=2485
cnum=2 value=23
80  May 19 15:35:42 op710n3 kernel: pfm_power5_write_pmd pid=2485
cnum=3 value=59251
81  May 19 15:35:42 op710n3 kernel: pfm_arch_ctxswin_thread pid=2485
task=c0000000e835d5e0 ctx=c0000000e6968000
82  May 19 15:35:42 op710n3 kernel: pfm_power5_enable_counters
pid=2485 ctx=c0000000e6968000
83  May 19 15:35:42 op710n3 kernel: pfm_power5_disable_counters
pid=2485 ctx=c0000000e6968000
84  May 19 15:35:43 op710n3 kernel: pfm_arch_ctxswout_thread pid=2489
task=c0000000e835d5e0 ctx=c0000000e6968000
85  May 19 15:35:43 op710n3 kernel: pfm_power5_disable_counters
pid=2489 ctx=c0000000e6968000
86  May 19 15:35:43 op710n3 kernel: pfm_power5_read_pmd pid=2489
cnum=2 result=23
87  May 19 15:35:43 op710n3 kernel: pfm_power5_read_pmd pid=2489
cnum=3 result=59505
88  May 19 15:35:43 op710n3 kernel: pfm_power5_read_pmd pid=2489
cnum=2 result=23
89  May 19 15:35:43 op710n3 kernel: pfm_save_pmds pid=2489
ctx=c0000000e6968000 cnum=2 value=23
90  May 19 15:35:43 op710n3 kernel: pfm_power5_read_pmd pid=2489
cnum=3 result=59505
91  May 19 15:35:43 op710n3 kernel: pfm_save_pmds pid=2489
ctx=c0000000e6968000 cnum=3 value=59505
92  May 19 15:35:43 op710n3 kernel: pfm_power5_write_pmd pid=2489 cnum=2 value=0
93  May 19 15:35:43 op710n3 kernel: pfm_power5_write_pmd pid=2489 cnum=3 value=0
94  May 19 15:35:43 op710n3 kernel: pfm_arch_restore_pmds pid=17
ctx=c0000000e6968000
95  May 19 15:35:43 op710n3 kernel: pfm_power5_write_pmd pid=17 cnum=2 value=23
96  May 19 15:35:43 op710n3 kernel: pfm_power5_write_pmd pid=17 cnum=3
value=59505
97  May 19 15:35:43 op710n3 kernel: pfm_arch_ctxswin_thread pid=17
task=c0000000e835d5e0 ctx=c0000000e6968000
98  May 19 15:35:43 op710n3 kernel: pfm_power5_enable_counters pid=17
ctx=c0000000e6968000
99  May 19 15:35:43 op710n3 kernel: pfm_power5_disable_counters pid=17
ctx=c0000000e6968000
100 May 19 15:35:43 op710n3 kernel: pfm_power5_disable_counters
pid=2489 ctx=c0000000e6968000
101 May 19 15:35:43 op710n3 kernel: pfm_power5_read_pmd pid=2489
cnum=2 result=23
102 May 19 15:35:43 op710n3 kernel: pfm_power5_read_pmd pid=2489
cnum=3 result=59637

## 1st reading

103 May 19 15:35:43 op710n3 kernel: sys_pfm_read_pmds pid=2489
ctx=c0000000e6968000
104 May 19 15:35:43 op710n3 kernel: __pfm_read_pmds pid=2489
ctx=c0000000e6968000
105 May 19 15:35:43 op710n3 kernel: pfm_power5_read_pmd pid=2489
cnum=3 result=59637
106 May 19 15:35:43 op710n3 kernel: __pfm_read_pmds pid=2489 cnum=3
val=59637 last_reset_val=0
107 May 19 15:35:43 op710n3 kernel: pfm_power5_read_pmd pid=2489
cnum=2 result=23
108 May 19 15:35:43 op710n3 kernel: __pfm_read_pmds pid=2489 cnum=2
val=23 last_reset_val=0

## value for counter 3 is 59637

Do you have any clue about what can be happening? Is this normal?

Thanks in advance!
Victor

------------------------------------------------------------------------------
Crystal Reports - New Free Runtime and 30 Day Trial
Check out the new simplified licensing option that enables 
unlimited royalty-free distribution of the report engine 
for externally facing server and web deployment. 
http://p.sf.net/sfu/businessobjects
_______________________________________________
perfmon2-devel mailing list
perfmon2-devel@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/perfmon2-devel

Reply via email to