くれすのPerl日記 このページをアンテナに追加 RSSフィード

この日記の方針。

  1. この日記では、超初心者向けの内容は取り扱っておりません。モジュールの利用など、実践的な内容が中心となります。
  2. ここに貼られるソースは、基本的にそのままでは動かないものばかりです。各自の責任でご利用ください。
  3. 内容が間違っていることがあります。その際はご指摘いただけるとありがたいです。「検証してみたら違う結果が出た」などの報告も大歓迎です。
  4. perl -e die

2009-02-02 (Mon)CPU情報の取得など

[] CPUの情報とかロードアベレージとか 01:39  CPUの情報とかロードアベレージとか - くれすのPerl日記 を含むブックマーク はてなブックマーク -  CPUの情報とかロードアベレージとか - くれすのPerl日記  CPUの情報とかロードアベレージとか - くれすのPerl日記 のブックマークコメント

/usr/bin/uptime の実行結果を正規表現で分解するのとか作ったことあるけど、そんなことしなくて済むモジュールはもちろん存在する。Windowsでもちゃんと動く。

Sys::Info だけインストールすればOK。WindowsのActivePerlなら、ppm install Sys::Infoで一発。

ソースコード

#!/usr/bin/perl
use strict;
use Sys::Info;
use Sys::Info::Constants qw(:device_cpu);

my $info = Sys::Info->new;
my $cpu = $info->device('CPU');

print 'CPU: ', scalar($cpu->identify), "\n";
print 'CPU speed: ', $cpu->speed, 'MHz', "\n";
print 'OS: ', $info->os->name, "\n";

### perldoc Sys::Info::Device::CPU
# Using this method under *Windows* is not recommended since, the "WMI"
# interface will possibly take at least 2 seconds to complete the request.
print 'CPU Load: ', $cpu->load(DCPU_LOAD_LAST_01), "\n";

実行結果

CPU: Intel(R) Pentium(R) M processor 1.60GHz

CPU speed: 1596MHz

OS: Windows XP

CPU Load: 0.02

注意して欲しいのは、

Using this method under *Windows* is not recommended since, the "WMI"

interface will possibly take at least 2 seconds to complete the request.

Windowsだと無駄に遅いということ。最低でも2秒かかる。

まあ、Windowsで使うことなんてないだろうけど。


何に使えるだろう。サーバ監視用とかに使えるかも。


あれ。

FreeBSDだとうまく行かないみたい?

CPU:

CPU speed: MHz

OS: FreeBSD

CPU Load: 0

Sys::Info::Driver::LinuxとSys::Info::Driver::Windowsはあるのに、FreeBSDだとUnknownになってしまう?みたい?

トラックバック - http://perl.g.hatena.ne.jp/Cress/20090202