Unix::Processors - Interface to processor (CPU) information


Unix-Processors documentation Contained in the Unix-Processors distribution.

Index


Code Index:

NAME

Top

Unix::Processors - Interface to processor (CPU) information

SYNOPSIS

Top

  use Unix::Processors;

  my $procs = new Unix::Processors;
  print "There are ", $procs->max_online, " CPUs at ", $procs->max_clock, "\n";
  if ($procs->max_online != $procs->max_physical) {
      print "Hyperthreading between ",$procs->max_physical," physical CPUs.\n";
  }
  (my $FORMAT =   "%2s  %-8s     %4s    \n") =~ s/\s\s+/ /g;
  printf($FORMAT, "#", "STATE", "CLOCK",  "TYPE", );
  foreach my $proc (@{$procs->processors}) {
      printf ($FORMAT, $proc->id, $proc->state, $proc->clock, $proc->type);
  }

DESCRIPTION

Top

This package provides accessors to per-processor (CPU) information. The object is obtained with the Unix::Processors::processors call. the operating system in a OS independent manner.

max_online

Return number of threading processors currently online. On hyperthreaded Linux systems, this indicates the maximum number of simultaneous threads that may execute; see max_physical for the real physical CPU count.

max_physical

Return number of physical processor cores currently online. For example, a single chip quad-core processor returns four.

max_socket

Returns the number of populated CPU sockets, if known, else the same number as max_physical. For example, a single chip quad-core processor returns one.

max_clock

Return the maximum clock speed across all online processors. Not all OSes support this call.

processors

Return an array of processor references. See the Unix::Processors::Info manual page. Not all OSes support this call.

DISTRIBUTION

Top

The latest version is available from CPAN and from http://www.veripool.org/.

Copyright 1999-2010 by Wilson Snyder. This package is free software; you you can redistribute it and/or modify it under the terms of either the GNU Lesser General Public License Version 3 or the Perl Artistic License Version 2.0.

AUTHORS

Top

Wilson Snyder <wsnyder@wsnyder.org>

SEE ALSO

Top

Unix::Processors::Info, Sys::Sysconf


Unix-Processors documentation Contained in the Unix-Processors distribution.

# Unix::Processors
# See copyright, etc in below POD section.
######################################################################

package Unix::Processors;
use Unix::Processors::Info;

$VERSION = '2.042';

require DynaLoader;
@ISA = qw(DynaLoader);

use strict;
use Carp;

######################################################################
#### Configuration Section

bootstrap Unix::Processors;

######################################################################
#### Accessors

sub new {
    # NOP for now, just need a handle for other routines
    @_ >= 1 or croak 'usage: Unix::Processors->new ({options})';
    my $proto = shift;
    my $class = ref($proto) || $proto;
    my $self = {@_,};
    bless $self, $class;
    return $self;
}

sub processors {
    my $self = shift; ($self && ref($self)) or croak 'usage: $self->max_online()';
    my @list;
    for (my $cnt=0; $cnt<64; $cnt++) {
	my $val = $cnt;
	my $vref = \$val;  # Just a reference to a cpu number
	bless $vref, 'Unix::Processors::Info';
	if ($vref->type) {
	    push @list, $vref;
	}
    }
    return \@list;
}

######################################################################
#### Package return
1;