> This driver only knows how to handle counters, though. I'm not sure > whether all of the MSRs that turbostat needs are counters.
turbostat --debug dumps a lot of configuration MSRs that are not counters. "--debug" is not an obscure option, it is the only way that the turbostat is used by advanced users, since it shows not just how fast a system is running, but explains why. turbostat -M or -C 'address' will dump an arbitrary MSR at offset 'address' in hex or counter format. This allows somebody to use yesterday's turbostat application to dump an MSR that didn't exist when the application was written. (and since the MSR driver doesn't have specific MSR addresses hard-coded into it, that is permitted) > I knew that turbostat only did MSR reads FYI, There have been proposals for turbostat to do MSR writes, and I've resisted them because I like that multiple turbostats can run at different intervals and even different users, and not interfere with each other. One of the proposals was due to a short counter that tends to over-flow. That, I think would be better done in a central place in the kernel, though it shouldn't poll unless it is actually being used. The other is to be able to fix configuration bits that are recognized to be incorrect or non-optimal. BTW. I've had a discussion w/ LLNL about their needs, both for security and performance. For security, as concluded by this thread, a white list is the only way to go. I'm thinking a bit-vector of allowed MSR offsets... For performance, they absolutely can not afford a system call for every single MSR access. Here an ioctl to have the msr driver perform a vector of accesses in a single system call seems the way to go. I can prototype both of these using turbostat as the customer. -Len N�����r��y����b�X��ǧv�^�){.n�+����{����zX����ܨ}���Ơz�&j:+v�������zZ+��+zf���h���~����i���z��w���?�����&�)ߢf��^jǫy�m��@A�a��� 0��h���i