Log-in |

CPU Observability

System administrators, software developers and advanced system users require
detailed knowledge about CPU resources of their systems. Different consumers
require different type of information which may be used for

   - System diagnostics
   - Performance tuning
   - Licensing
   - Provisioning
   - Power management

Currently Solaris provide the information with various ad hoc tools and
libraries (psrinfo(1M), prtconf (1M) and /dev/cpu/self). The new Processor Group
infrastructure provides no user-land visibility at all. This makes it hard for
application developers to optimize for specific sharing relationships on their
hardware.

I would like to propose an OpenSolaris project aimed at providing observability
into CPU-related information. The objective is to provide user (and,
potentially, kernel) level APIs and tools that will expose detailed information
about CPus and their components (like caches, pipelines, etc.)

Criteria

   - Should be a stable interface
   - Should be useful for existing and forthcoming CPU architectures
   - Should co-exist with virtualization

What information to export

There are two approaches -

   - Export everything - may be useful for HPC/Java and alike. This encourages non-portable applications.

   - Export abstractions. It is not clear what are useful abstractions that can be utilized by portable applications.

Ways to present the information

   - Library/API
   - Using kstat framework (with possible extensions)
   - Use file-system based presentation

Areas

Exporting cpuid information

   - cpu_info kstats export a lot
   - cpuid is user-land instruction so, probably, nothing special should be done.
   - may use public domain intereters for cpuid

Notes

  - Because of virtualization less information may be better than more

  - We do not want to export low-level detail that encourage bad programming
  - would like to encourage descriptive APIs
  - Some consumers (e.g. java) may still need some low -evel details
  - It would be nice to export useful abstractions
  - Can use linux-like /proc/cpuinfo since it is available from brandz and we
can get it for free. - For cpuid we can get raw format output and some GNU variant for full version. - It is nice to modify mpstat to show per core/per cache info - We can do this using existing **cpu_info** kstat framefork; may need to export cache id as well - it is available. - Is any of this information useful to export via SNMP MIB?

last modified by admin on 2009/10/26 12:13
Collectives
Project

Project cpufs Pages

© Sun Microsystems Inc. 2009
XWiki Enterprise 1.8.2.19075 - Documentation
Terms Of Use | Privacy | Trademarks | Copyright Policy | Site Guidelines | Site map | Help
Your use of this web site or any of its content or software indicates your agreement to be bound by these Terms of Use.