Project

sys-cpu

0.38
A long-lived project that still receives updates
The sys-cpu library provides an interface for gathering information about your system's processor(s). Information includes speed, type, and load average.
2005
2006
2007
2008
2009
2010
2011
2012
2013
2014
2015
2016
2017
2018
2019
2020
2021
2022
2023
2024
 Dependencies

Development

Runtime

~> 1.1
 Project Readme

Ruby

  • Linux
  • Windows
  • OSX
  • DragonflyBSD

Description

A Ruby interface for getting cpu information.

Installation

gem install sys-cpu

Adding the trusted cert

gem cert --add <(curl -Ls https://raw.githubusercontent.com/djberg96/sys-cpu/main/certs/djberg96_pub.pem)

Notes

Solaris

There is no processors iterative method for multi-cpu systems. I was going to add this originally, but since Solaris is basically dead at this point I've dropped the idea.

OS X

The CPU.model method returns very limited information. I do not yet know how to get more detailed information.

Linux

This is pure Ruby. This version reads information out of /proc/cpuinfo and /proc/loadavg, so if /proc isn't mounted it won't work.

The key-value information in /proc/cpuinfo is stored internally (i.e. in memory) as an array of hashes when you first require this package. This overhead is exceptionally minimal, given that your average cpuinfo file contains less than 1k of text (and I don't store whitespace or newlines).

The text documentation for Linux is dynamically generated during the build process because the fields vary depending on your setup. So, don't look at it until after you've installed it. You will see a doc/linux.txt file after you run rake install (via install.rb).

HP-UX

Unlike other platforms, you can get load averages for an individual cpu in multi-cpu systems. See documentation for more details.

Note that version 0.7.x and later will not work on HP-UX because of the switch to FFI and the lack of a testing platform. However, version 0.6.x will work just fine.

MS Windows

This is a pure Ruby implementation using the win32ole package + WMI. The C version has been scrapped.

As of version 0.5.0, the CPU.usage method has been removed in favor of the CPU.load_avg method. This does not (currently) use a perf counter, so there is no longer any delay. Also, the processors method has been added and the supported method has been dropped. See the documentation for other changes.

Acknowledgements

Thanks go to the MPlayer team for some source code that helped me on certain versions of FreeBSD in the original C version.

Known Bugs

None that I'm aware of. Please report bugs on the project page at:

https://github.com/djberg96/sys-cpu

Future Plans

  • Add iterative CPU.processors method.
  • Add more information in general, such as what prtdiag shows.

License

Apache-2.0

Copyright

(C) 2003-2024 Daniel J. Berger, All Rights Reserved

Warranty

This package is provided "as is" and without any express or implied warranties, including, without limitation, the implied warranties of merchantability and fitness for a particular purpose.

Author

Daniel J. Berger