Hi Stephane,

We have run into an error condition which I do not think is handled properly.  
If I run the following command, I get this error:


papi_command_line snbep_unc_cbo0::UNC_C_TOR_INSERTS:MISS_ALL:cpu=0 
snbep_unc_cbo0::UNC_C_TOR_INSERTS:NID_MISS_ALL:nf=0x1:cpu=0

PAPI Error: Error!  short read!
PAPI Error: read: fd:  4, tid: 0, cpu: 0, ret: 0
PAPI Error: Error Code -3,A System/C library call failed: No such file or 
directory.
System error in PAPI_stop: No such file or directory
Successfully added: snbep_unc_cbo0::UNC_C_TOR_INSERTS:MISS_ALL:cpu=0
Successfully added: snbep_unc_cbo0::UNC_C_TOR_INSERTS:NID_MISS_ALL:nf=0x1:cpu=0
command_line.c                       FAILED
Line # 122


When looking in the libpfm4 event tables for snbep_unc_cbo, it looks like the 
MISS_ALL and NID_MISS_ALL masks are not allowed to both be used at the same 
time.  But when looking at the PAPI debug output, I find the following behavior:


Papi called libpfm4 to encode the event 
'snbep_unc_cbo0::UNC_C_TOR_INSERTS:MISS_ALL:cpu=0' successfully.
Papi called libpfm4 to encode the event 
'snbep_unc_cbo0::UNC_C_TOR_INSERTS:NID_MISS_ALL:nf=0x1:cpu=0' successfully.

Papi called the kernel to open the first event (in a disabled state) and the 
kernel returned fd 3.
Papi called the kernel to open the second event (in a disabled state) and the 
kernel returned fd 4 (the open calls did not use event grouping).

Papi called the kernel for the first event to enable event counting (ioctl fd 
3) and the kernel did not return -1 (what Papi checks for an error).
Papi called the kernel for the second event to enable event counting (ioctl fd 
4) and the kernel did not return -1.

The papi_command_line tool did some work.

Papi called the kernel for the first event to disable event counting (ioctl fd 
3) and the kernel did not return -1.
Papi called the kernel for the second event to disable event counting (ioctl fd 
4) and the kernel did not return -1.

Papi called the kernel for the first event to read the result (read fd 3) and 
the kernel returned 8 bytes with a value of 1562.
Papi called the kernel for the second event to read the result (read fd 4) and 
the kernel returned 0 bytes which papi considers an error (caused short read).

Given this sequence of events, I understand why neither PAPI or libpfm4 
detected that these events cannot be used at the same time.  But it seems to me 
like the kernel should have been able to detect this when the second event was 
opened and return an error.  This would have been a much better time to report 
the error than when trying to read the results of an event that the kernel said 
was successfully opened.

Do you think this is something that the kernel could/should handle better ?
We run rhel6 which is pretty old now, does a current version of the kernel 
handle this pair of events better ?
Is there a way that PAPI or libpfm4 could have detected this invalid 
combination of events before doing the kernel opens ?

Thanks
Gary

------------------------------------------------------------------------------
Slashdot TV.  
Video for Nerds.  Stuff that matters.
http://tv.slashdot.org/
_______________________________________________
perfmon2-devel mailing list
perfmon2-devel@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/perfmon2-devel

Reply via email to