mirror of
https://gitlab.com/libvirt/libvirt.git
synced 2025-02-01 17:35:17 +00:00
Split out generic nodeinfo API
This commit is contained in:
parent
d2cf974b6e
commit
773aa3b86b
12
ChangeLog
12
ChangeLog
@ -1,3 +1,15 @@
|
||||
Tue Jul 25 19:13:43 EST 2007 Daniel P. berrange <berrange@redhat.com>
|
||||
|
||||
* src/nodeinfo.h, src/nodeinfo.c: Generic impl of virNodeGetInfo
|
||||
* src/qemu_driver.c, src/openvz_driver: Switch to generic impl
|
||||
of virNodeGetInfo
|
||||
* src/internal.h: Add STREQLEN STRNEQLEN
|
||||
* src/Makefile.am: Add nodeinfo.{c,h}
|
||||
* docs/apibuild.py: Ignore nodeinfo files
|
||||
* tests/nodeinfotest.c, tests/Makefile.am: Test case for the
|
||||
nodeinfo.c APIs
|
||||
* tests/nodeinfodata/*: Data files for the test suite
|
||||
|
||||
Tue Jul 24 17:32:23 CEST 2007 Daniel Veillard <veillard@redhat.com>
|
||||
|
||||
* libvirt.spec.in NEWS docs/* po/*: preparing release 0.3.1
|
||||
|
@ -63,6 +63,8 @@ ignored_files = {
|
||||
"uuid.c": "internal code",
|
||||
"util.h": "internal code",
|
||||
"util.c": "internal code",
|
||||
"nodeinfo.h": "internal code",
|
||||
"nodeinfo.c": "internal code",
|
||||
}
|
||||
|
||||
ignored_words = {
|
||||
|
@ -50,6 +50,7 @@ CLIENT_SOURCES = \
|
||||
qemu_conf.c qemu_conf.h \
|
||||
openvz_conf.c openvz_conf.h \
|
||||
openvz_driver.c openvz_driver.h \
|
||||
nodeinfo.h nodeinfo.c \
|
||||
util.c util.h
|
||||
|
||||
SERVER_SOURCES = \
|
||||
|
@ -36,6 +36,8 @@ extern "C" {
|
||||
#define STRCASEEQ(a,b) (strcasecmp((a),(b)) == 0)
|
||||
#define STRNEQ(a,b) (strcmp((a),(b)) != 0)
|
||||
#define STRCASENEQ(a,b) (strcasecmp((a),(b)) != 0)
|
||||
#define STREQLEN(a,b,n) (strncmp((a),(b),(n)) == 0)
|
||||
#define STRNEQLEN(a,b,n) (strncmp((a),(b),(n)) != 0)
|
||||
|
||||
/**
|
||||
* ATTRIBUTE_UNUSED:
|
||||
|
193
src/nodeinfo.c
Normal file
193
src/nodeinfo.c
Normal file
@ -0,0 +1,193 @@
|
||||
/*
|
||||
* nodeinfo.c: Helper routines for OS specific node information
|
||||
*
|
||||
* Copyright (C) 2006, 2007 Red Hat, Inc.
|
||||
* Copyright (C) 2006 Daniel P. Berrange
|
||||
*
|
||||
* This library is free software; you can redistribute it and/or
|
||||
* modify it under the terms of the GNU Lesser General Public
|
||||
* License as published by the Free Software Foundation; either
|
||||
* version 2.1 of the License, or (at your option) any later version.
|
||||
*
|
||||
* This library is distributed in the hope that it will be useful,
|
||||
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
|
||||
* Lesser General Public License for more details.
|
||||
*
|
||||
* You should have received a copy of the GNU Lesser General Public
|
||||
* License along with this library; if not, write to the Free Software
|
||||
* Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
|
||||
*
|
||||
* Author: Daniel P. Berrange <berrange@redhat.com>
|
||||
*/
|
||||
|
||||
#include <stdio.h>
|
||||
#include <string.h>
|
||||
#include <stdlib.h>
|
||||
#include <sys/utsname.h>
|
||||
#include <errno.h>
|
||||
#include <ctype.h>
|
||||
|
||||
#include "nodeinfo.h"
|
||||
|
||||
#ifdef __linux__
|
||||
#define MEMINFO_PATH "/proc/meminfo"
|
||||
#define CPUINFO_PATH "/proc/cpuinfo"
|
||||
|
||||
/* NB, these are not static as we need to call them from testsuite */
|
||||
int linuxNodeInfoCPUPopulate(virConnectPtr conn, FILE *cpuinfo, virNodeInfoPtr nodeinfo);
|
||||
int linuxNodeInfoMemPopulate(virConnectPtr conn, FILE *meminfo, virNodeInfoPtr nodeinfo);
|
||||
|
||||
int linuxNodeInfoCPUPopulate(virConnectPtr conn, FILE *cpuinfo, virNodeInfoPtr nodeinfo) {
|
||||
char line[1024];
|
||||
|
||||
nodeinfo->cpus = 0;
|
||||
nodeinfo->mhz = 0;
|
||||
nodeinfo->nodes = nodeinfo->sockets = nodeinfo->cores = nodeinfo->threads = 1;
|
||||
|
||||
/* NB: It is impossible to fill our nodes, since cpuinfo
|
||||
* has not knowledge of NUMA nodes */
|
||||
|
||||
/* XXX hyperthreads */
|
||||
while (fgets(line, sizeof(line), cpuinfo) != NULL) {
|
||||
char *buf = line;
|
||||
if (STREQLEN(buf, "processor", 9)) { /* aka a single logical CPU */
|
||||
buf += 9;
|
||||
while (*buf && isspace(*buf))
|
||||
buf++;
|
||||
if (*buf != ':') {
|
||||
__virRaiseError(conn, NULL, NULL, 0, VIR_ERR_INTERNAL_ERROR,
|
||||
VIR_ERR_ERROR, NULL, NULL, NULL, 0, 0,
|
||||
"parsing cpuinfo processor");
|
||||
return -1;
|
||||
}
|
||||
nodeinfo->cpus++;
|
||||
} else if (STREQLEN(buf, "cpu MHz", 7)) {
|
||||
buf += 9;
|
||||
while (*buf && isspace(*buf))
|
||||
buf++;
|
||||
if (*buf != ':' || !buf[1]) {
|
||||
__virRaiseError(conn, NULL, NULL, 0, VIR_ERR_INTERNAL_ERROR,
|
||||
VIR_ERR_ERROR, NULL, NULL, NULL, 0, 0,
|
||||
"parsing cpuinfo cpu MHz");
|
||||
return -1;
|
||||
}
|
||||
nodeinfo->mhz = (unsigned int)strtol(buf+1, NULL, 10);
|
||||
} else if (STREQLEN(buf, "cpu cores", 9)) { /* aka cores */
|
||||
unsigned int id;
|
||||
buf += 9;
|
||||
while (*buf && isspace(*buf))
|
||||
buf++;
|
||||
if (*buf != ':' || !buf[1]) {
|
||||
__virRaiseError(conn, NULL, NULL, 0, VIR_ERR_INTERNAL_ERROR,
|
||||
VIR_ERR_ERROR, NULL, NULL, NULL, 0, 0,
|
||||
"parsing cpuinfo cpu cores %c", *buf);
|
||||
return -1;
|
||||
}
|
||||
id = (unsigned int)strtol(buf+1, NULL, 10);
|
||||
if (id > nodeinfo->cores)
|
||||
nodeinfo->cores = id;
|
||||
}
|
||||
}
|
||||
|
||||
if (!nodeinfo->cpus) {
|
||||
__virRaiseError(conn, NULL, NULL, 0, VIR_ERR_INTERNAL_ERROR,
|
||||
VIR_ERR_ERROR, NULL, NULL, NULL, 0, 0,
|
||||
"no cpus found");
|
||||
return -1;
|
||||
}
|
||||
|
||||
/*
|
||||
* Can't reliably count sockets from proc metadata, so
|
||||
* infer it based on total CPUs vs cores.
|
||||
* XXX hyperthreads
|
||||
*/
|
||||
nodeinfo->sockets = nodeinfo->cpus / nodeinfo->cores;
|
||||
|
||||
return 0;
|
||||
}
|
||||
|
||||
|
||||
int linuxNodeInfoMemPopulate(virConnectPtr conn, FILE *meminfo, virNodeInfoPtr nodeinfo) {
|
||||
char line[1024];
|
||||
|
||||
nodeinfo->memory = 0;
|
||||
|
||||
while (fgets(line, sizeof(line), meminfo) != NULL) {
|
||||
if (STREQLEN(line, "MemTotal:", 9)) {
|
||||
nodeinfo->memory = (unsigned int)strtol(line + 10, NULL, 10);
|
||||
}
|
||||
}
|
||||
if (!nodeinfo->memory) {
|
||||
__virRaiseError(conn, NULL, NULL, 0, VIR_ERR_INTERNAL_ERROR,
|
||||
VIR_ERR_ERROR, NULL, NULL, NULL, 0, 0,
|
||||
"no memory found");
|
||||
return -1;
|
||||
}
|
||||
|
||||
return 0;
|
||||
}
|
||||
|
||||
|
||||
#endif
|
||||
|
||||
int virNodeInfoPopulate(virConnectPtr conn,
|
||||
virNodeInfoPtr nodeinfo) {
|
||||
struct utsname info;
|
||||
#ifdef __linux__
|
||||
int ret;
|
||||
FILE *cpuinfo, *meminfo;
|
||||
#endif
|
||||
|
||||
if (uname(&info) < 0) {
|
||||
__virRaiseError(conn, NULL, NULL, 0, VIR_ERR_INTERNAL_ERROR,
|
||||
VIR_ERR_ERROR, NULL, NULL, NULL, 0, 0,
|
||||
"cannot extract machine type %s", strerror(errno));
|
||||
return -1;
|
||||
}
|
||||
|
||||
strncpy(nodeinfo->model, info.machine, sizeof(nodeinfo->model)-1);
|
||||
nodeinfo->model[sizeof(nodeinfo->model)-1] = '\0';
|
||||
|
||||
#ifdef __linux__
|
||||
cpuinfo = fopen(CPUINFO_PATH, "r");
|
||||
if (!cpuinfo) {
|
||||
__virRaiseError(conn, NULL, NULL, 0, VIR_ERR_INTERNAL_ERROR,
|
||||
VIR_ERR_ERROR, NULL, NULL, NULL, 0, 0,
|
||||
"cannot open %s %s", CPUINFO_PATH, strerror(errno));
|
||||
return -1;
|
||||
}
|
||||
ret = linuxNodeInfoCPUPopulate(conn, cpuinfo, nodeinfo);
|
||||
fclose(cpuinfo);
|
||||
if (ret < 0)
|
||||
return -1;
|
||||
|
||||
meminfo = fopen(MEMINFO_PATH, "r");
|
||||
if (!meminfo) {
|
||||
__virRaiseError(conn, NULL, NULL, 0, VIR_ERR_INTERNAL_ERROR,
|
||||
VIR_ERR_ERROR, NULL, NULL, NULL, 0, 0,
|
||||
"cannot open %s %s", MEMINFO_PATH, strerror(errno));
|
||||
return -1;
|
||||
}
|
||||
ret = linuxNodeInfoMemPopulate(conn, meminfo, nodeinfo);
|
||||
fclose(meminfo);
|
||||
|
||||
return ret;
|
||||
#else
|
||||
/* XXX Solaris will need an impl later if they port QEMU driver */
|
||||
__virRaiseError(conn, NULL, NULL, 0, VIR_ERR_INTERNAL_ERROR,
|
||||
VIR_ERR_ERROR, NULL, NULL, NULL, 0, 0,
|
||||
"%s:%s not implemented on this platform\n", __FILE__, __FUNCTION__);
|
||||
return -1;
|
||||
#endif
|
||||
}
|
||||
|
||||
|
||||
/*
|
||||
* Local variables:
|
||||
* indent-tabs-mode: nil
|
||||
* c-indent-level: 4
|
||||
* c-basic-offset: 4
|
||||
* tab-width: 4
|
||||
* End:
|
||||
*/
|
39
src/nodeinfo.h
Normal file
39
src/nodeinfo.h
Normal file
@ -0,0 +1,39 @@
|
||||
/*
|
||||
* nodeinfo.c: Helper routines for OS specific node information
|
||||
*
|
||||
* Copyright (C) 2006, 2007 Red Hat, Inc.
|
||||
* Copyright (C) 2006 Daniel P. Berrange
|
||||
*
|
||||
* This library is free software; you can redistribute it and/or
|
||||
* modify it under the terms of the GNU Lesser General Public
|
||||
* License as published by the Free Software Foundation; either
|
||||
* version 2.1 of the License, or (at your option) any later version.
|
||||
*
|
||||
* This library is distributed in the hope that it will be useful,
|
||||
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
|
||||
* Lesser General Public License for more details.
|
||||
*
|
||||
* You should have received a copy of the GNU Lesser General Public
|
||||
* License along with this library; if not, write to the Free Software
|
||||
* Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
|
||||
*
|
||||
* Author: Daniel P. Berrange <berrange@redhat.com>
|
||||
*/
|
||||
|
||||
#ifndef __VIR_NODEINFO_H__
|
||||
#define __VIR_NODEINFO_H__
|
||||
|
||||
#include "internal.h"
|
||||
|
||||
#ifdef __cplusplus
|
||||
extern "C" {
|
||||
#endif
|
||||
|
||||
int virNodeInfoPopulate(virConnectPtr conn, virNodeInfoPtr nodeinfo);
|
||||
|
||||
#ifdef __cplusplus
|
||||
}
|
||||
#endif
|
||||
|
||||
#endif /* __VIR_NODEINFO_H__*/
|
@ -55,12 +55,14 @@
|
||||
#include "util.h"
|
||||
#include "openvz_driver.h"
|
||||
#include "openvz_conf.h"
|
||||
#include "nodeinfo.h"
|
||||
|
||||
|
||||
#define openvzLog(level, msg...) fprintf(stderr, msg)
|
||||
|
||||
static virDomainPtr openvzDomainLookupByID(virConnectPtr conn, int id);
|
||||
static char *openvzGetOSType(virDomainPtr dom);
|
||||
static int openvzGetNodeInfo(virConnectPtr conn, virNodeInfoPtr nodeinfo);
|
||||
static virDomainPtr openvzDomainLookupByUUID(virConnectPtr conn, const unsigned char *uuid);
|
||||
static virDomainPtr openvzDomainLookupByName(virConnectPtr conn, const char *name);
|
||||
static int openvzDomainGetInfo(virDomainPtr dom, virDomainInfoPtr info);
|
||||
@ -327,6 +329,12 @@ static const char *openvzGetType(virConnectPtr conn ATTRIBUTE_UNUSED) {
|
||||
}
|
||||
|
||||
|
||||
static int openvzGetNodeInfo(virConnectPtr conn,
|
||||
virNodeInfoPtr nodeinfo) {
|
||||
return virNodeInfoPopulate(conn, nodeinfo);
|
||||
}
|
||||
|
||||
|
||||
static int openvzListDomains(virConnectPtr conn, int *ids, int nids) {
|
||||
int got = 0;
|
||||
int veid, pid, outfd, errfd;
|
||||
@ -431,7 +439,7 @@ static virDriver openvzDriver = {
|
||||
NULL, /* hostname */
|
||||
NULL, /* uri */
|
||||
NULL, /* getMaxVcpus */
|
||||
NULL, /* nodeGetInfo */
|
||||
openvzGetNodeInfo, /* nodeGetInfo */
|
||||
NULL, /* getCapabilities */
|
||||
openvzListDomains, /* listDomains */
|
||||
openvzNumDomains, /* numOfDomains */
|
||||
|
@ -53,6 +53,7 @@
|
||||
#include "util.h"
|
||||
#include "qemu_driver.h"
|
||||
#include "qemu_conf.h"
|
||||
#include "nodeinfo.h"
|
||||
|
||||
static int qemudShutdown(void);
|
||||
|
||||
@ -1358,81 +1359,6 @@ static int qemudMonitorCommand(struct qemud_driver *driver ATTRIBUTE_UNUSED,
|
||||
}
|
||||
|
||||
|
||||
static int qemudGetMemInfo(unsigned long *memory) {
|
||||
FILE *meminfo = fopen("/proc/meminfo", "r");
|
||||
char line[1024];
|
||||
|
||||
*memory = 0;
|
||||
|
||||
if (!meminfo) {
|
||||
return -1;
|
||||
}
|
||||
|
||||
/* XXX NUMA and hyperthreads ? */
|
||||
while (fgets(line, sizeof(line), meminfo) != NULL) {
|
||||
if (!strncmp(line, "MemTotal:", 9)) {
|
||||
*memory = (unsigned int)strtol(line + 10, NULL, 10);
|
||||
}
|
||||
}
|
||||
fclose(meminfo);
|
||||
return 0;
|
||||
}
|
||||
|
||||
static int qemudGetCPUInfo(unsigned int *cpus, unsigned int *mhz,
|
||||
unsigned int *nodes, unsigned int *sockets,
|
||||
unsigned int *cores, unsigned int *threads) {
|
||||
FILE *cpuinfo = fopen("/proc/cpuinfo", "r");
|
||||
char line[1024];
|
||||
|
||||
*cpus = 0;
|
||||
*mhz = 0;
|
||||
*nodes = *sockets = *cores = *threads = 1;
|
||||
|
||||
if (!cpuinfo) {
|
||||
return -1;
|
||||
}
|
||||
|
||||
/* XXX NUMA and hyperthreads ? */
|
||||
while (fgets(line, sizeof(line), cpuinfo) != NULL) {
|
||||
if (!strncmp(line, "processor\t", 10)) { /* aka a single logical CPU */
|
||||
(*cpus)++;
|
||||
} else if (!strncmp(line, "cpu MHz\t", 8)) {
|
||||
char *offset = strchr(line, ':');
|
||||
if (!offset)
|
||||
continue;
|
||||
offset++;
|
||||
if (!*offset)
|
||||
continue;
|
||||
*mhz = (unsigned int)strtol(offset, NULL, 10);
|
||||
} else if (!strncmp(line, "physical id\t", 12)) { /* aka socket */
|
||||
unsigned int id;
|
||||
char *offset = strchr(line, ':');
|
||||
if (!offset)
|
||||
continue;
|
||||
offset++;
|
||||
if (!*offset)
|
||||
continue;
|
||||
id = (unsigned int)strtol(offset, NULL, 10);
|
||||
if ((id+1) > *sockets)
|
||||
*sockets = (id + 1);
|
||||
} else if (!strncmp(line, "cpu cores\t", 9)) { /* aka cores */
|
||||
unsigned int id;
|
||||
char *offset = strchr(line, ':');
|
||||
if (!offset)
|
||||
continue;
|
||||
offset++;
|
||||
if (!*offset)
|
||||
continue;
|
||||
id = (unsigned int)strtol(offset, NULL, 10);
|
||||
if (id > *cores)
|
||||
*cores = id;
|
||||
}
|
||||
}
|
||||
fclose(cpuinfo);
|
||||
|
||||
return 0;
|
||||
}
|
||||
|
||||
static virDrvOpenStatus qemudOpen(virConnectPtr conn,
|
||||
const char *name,
|
||||
int flags ATTRIBUTE_UNUSED) {
|
||||
@ -1485,23 +1411,9 @@ static int qemudGetMaxVCPUs(virConnectPtr conn ATTRIBUTE_UNUSED,
|
||||
return -1;
|
||||
}
|
||||
|
||||
static int qemudGetNodeInfo(virConnectPtr conn ATTRIBUTE_UNUSED,
|
||||
virNodeInfoPtr node) {
|
||||
struct utsname info;
|
||||
|
||||
if (uname(&info) < 0)
|
||||
return -1;
|
||||
|
||||
strncpy(node->model, info.machine, sizeof(node->model)-1);
|
||||
node->model[sizeof(node->model)-1] = '\0';
|
||||
|
||||
if (qemudGetMemInfo(&(node->memory)) < 0)
|
||||
return -1;
|
||||
|
||||
if (qemudGetCPUInfo(&(node->cpus), &(node->mhz), &(node->nodes),
|
||||
&(node->sockets), &(node->cores), &(node->threads)) < 0)
|
||||
return -1;
|
||||
return 0;
|
||||
static int qemudGetNodeInfo(virConnectPtr conn,
|
||||
virNodeInfoPtr nodeinfo) {
|
||||
return virNodeInfoPopulate(conn, nodeinfo);
|
||||
}
|
||||
|
||||
static char *qemudGetCapabilities(virConnectPtr conn ATTRIBUTE_UNUSED) {
|
||||
|
@ -12,6 +12,7 @@ xmconfigtest
|
||||
xencapstest
|
||||
qemuxml2xmltest
|
||||
qemuxml2argvtest
|
||||
nodeinfotest
|
||||
*.gcda
|
||||
*.gcno
|
||||
|
||||
|
@ -32,10 +32,11 @@ LDADDS = \
|
||||
EXTRA_DIST = xmlrpcserver.py test_conf.sh
|
||||
|
||||
noinst_PROGRAMS = xmlrpctest xml2sexprtest sexpr2xmltest virshtest conftest \
|
||||
reconnect xmconfigtest xencapstest qemuxml2argvtest qemuxml2xmltest
|
||||
reconnect xmconfigtest xencapstest qemuxml2argvtest qemuxml2xmltest \
|
||||
nodeinfotest
|
||||
|
||||
TESTS = xml2sexprtest sexpr2xmltest virshtest test_conf.sh xmconfigtest \
|
||||
xencapstest qemuxml2argvtest qemuxml2xmltest
|
||||
xencapstest qemuxml2argvtest qemuxml2xmltest nodeinfotest
|
||||
if ENABLE_XEN_TESTS
|
||||
TESTS += reconnect
|
||||
endif
|
||||
@ -99,6 +100,11 @@ xencapstest_SOURCES = \
|
||||
xencapstest_LDFLAGS =
|
||||
xencapstest_LDADD = $(LDADDS)
|
||||
|
||||
nodeinfotest_SOURCES = \
|
||||
nodeinfotest.c testutils.h testutils.c
|
||||
nodeinfotest_LDFLAGS =
|
||||
nodeinfotest_LDADD = $(LDADDS)
|
||||
|
||||
reconnect_SOURCES = \
|
||||
reconnect.c
|
||||
reconnect_LDFLAGS =
|
||||
|
46
tests/nodeinfodata/linux-nodeinfo-1.cpuinfo
Normal file
46
tests/nodeinfodata/linux-nodeinfo-1.cpuinfo
Normal file
@ -0,0 +1,46 @@
|
||||
processor : 0
|
||||
vendor_id : GenuineIntel
|
||||
cpu family : 15
|
||||
model : 4
|
||||
model name : Intel(R) Xeon(TM) CPU 2.80GHz
|
||||
stepping : 8
|
||||
cpu MHz : 2800.000
|
||||
cache size : 2048 KB
|
||||
physical id : 0
|
||||
siblings : 2
|
||||
core id : 0
|
||||
cpu cores : 2
|
||||
fpu : yes
|
||||
fpu_exception : yes
|
||||
cpuid level : 5
|
||||
wp : yes
|
||||
flags : fpu vme de pse tsc msr pae mce cx8 apic sep mtrr pge mca cmov pat pse36 clflush dts acpi mmx fxsr sse sse2 ss ht tm syscall nx lm constant_tsc pni monitor ds_cpl est cid cx16 xtpr lahf_lm
|
||||
bogomips : 5590.67
|
||||
clflush size : 64
|
||||
cache_alignment : 128
|
||||
address sizes : 36 bits physical, 48 bits virtual
|
||||
power management:
|
||||
|
||||
processor : 1
|
||||
vendor_id : GenuineIntel
|
||||
cpu family : 15
|
||||
model : 4
|
||||
model name : Intel(R) Xeon(TM) CPU 2.80GHz
|
||||
stepping : 8
|
||||
cpu MHz : 2800.000
|
||||
cache size : 2048 KB
|
||||
physical id : 0
|
||||
siblings : 2
|
||||
core id : 1
|
||||
cpu cores : 2
|
||||
fpu : yes
|
||||
fpu_exception : yes
|
||||
cpuid level : 5
|
||||
wp : yes
|
||||
flags : fpu vme de pse tsc msr pae mce cx8 apic sep mtrr pge mca cmov pat pse36 clflush dts acpi mmx fxsr sse sse2 ss ht tm syscall nx lm constant_tsc pni monitor ds_cpl est cid cx16 xtpr lahf_lm
|
||||
bogomips : 5586.49
|
||||
clflush size : 64
|
||||
cache_alignment : 128
|
||||
address sizes : 36 bits physical, 48 bits virtual
|
||||
power management:
|
||||
|
28
tests/nodeinfodata/linux-nodeinfo-1.meminfo
Normal file
28
tests/nodeinfodata/linux-nodeinfo-1.meminfo
Normal file
@ -0,0 +1,28 @@
|
||||
MemTotal: 2053960 kB
|
||||
MemFree: 157792 kB
|
||||
Buffers: 209440 kB
|
||||
Cached: 660788 kB
|
||||
SwapCached: 76 kB
|
||||
Active: 1416036 kB
|
||||
Inactive: 178872 kB
|
||||
SwapTotal: 2064376 kB
|
||||
SwapFree: 2063940 kB
|
||||
Dirty: 1736 kB
|
||||
Writeback: 0 kB
|
||||
AnonPages: 723984 kB
|
||||
Mapped: 105208 kB
|
||||
Slab: 225000 kB
|
||||
SReclaimable: 172568 kB
|
||||
SUnreclaim: 52432 kB
|
||||
PageTables: 40224 kB
|
||||
NFS_Unstable: 0 kB
|
||||
Bounce: 0 kB
|
||||
CommitLimit: 3091356 kB
|
||||
Committed_AS: 1270588 kB
|
||||
VmallocTotal: 34359738367 kB
|
||||
VmallocUsed: 30640 kB
|
||||
VmallocChunk: 34359705907 kB
|
||||
HugePages_Total: 0
|
||||
HugePages_Free: 0
|
||||
HugePages_Rsvd: 0
|
||||
Hugepagesize: 2048 kB
|
1
tests/nodeinfodata/linux-nodeinfo-1.txt
Normal file
1
tests/nodeinfodata/linux-nodeinfo-1.txt
Normal file
@ -0,0 +1 @@
|
||||
CPUs: 2, MHz: 2800, Nodes: 1, Sockets: 1, Cores: 2, Threads: 1, Memory: 2053960
|
48
tests/nodeinfodata/linux-nodeinfo-2.cpuinfo
Normal file
48
tests/nodeinfodata/linux-nodeinfo-2.cpuinfo
Normal file
@ -0,0 +1,48 @@
|
||||
processor : 0
|
||||
vendor_id : AuthenticAMD
|
||||
cpu family : 15
|
||||
model : 75
|
||||
model name : AMD Athlon(tm) 64 X2 Dual Core Processor 4200+
|
||||
stepping : 2
|
||||
cpu MHz : 2211.364
|
||||
cache size : 512 KB
|
||||
physical id : 0
|
||||
siblings : 2
|
||||
core id : 0
|
||||
cpu cores : 2
|
||||
fpu : yes
|
||||
fpu_exception : yes
|
||||
cpuid level : 1
|
||||
wp : yes
|
||||
flags : fpu vme de pse tsc msr pae mce cx8 apic sep mtrr pge mca cmov pat pse36 clflush mmx fxsr sse sse2 ht syscall nx mmxext fxsr_opt rdtscp lm 3dnowext 3dnow pni cx16 lahf_lm cmp_legacy svm extapic cr8_legacy
|
||||
bogomips : 4424.80
|
||||
TLB size : 1024 4K pages
|
||||
clflush size : 64
|
||||
cache_alignment : 64
|
||||
address sizes : 40 bits physical, 48 bits virtual
|
||||
power management: ts fid vid ttp tm stc
|
||||
|
||||
processor : 1
|
||||
vendor_id : AuthenticAMD
|
||||
cpu family : 15
|
||||
model : 75
|
||||
model name : AMD Athlon(tm) 64 X2 Dual Core Processor 4200+
|
||||
stepping : 2
|
||||
cpu MHz : 2211.364
|
||||
cache size : 512 KB
|
||||
physical id : 0
|
||||
siblings : 2
|
||||
core id : 1
|
||||
cpu cores : 2
|
||||
fpu : yes
|
||||
fpu_exception : yes
|
||||
cpuid level : 1
|
||||
wp : yes
|
||||
flags : fpu vme de pse tsc msr pae mce cx8 apic sep mtrr pge mca cmov pat pse36 clflush mmx fxsr sse sse2 ht syscall nx mmxext fxsr_opt rdtscp lm 3dnowext 3dnow pni cx16 lahf_lm cmp_legacy svm extapic cr8_legacy
|
||||
bogomips : 4422.14
|
||||
TLB size : 1024 4K pages
|
||||
clflush size : 64
|
||||
cache_alignment : 64
|
||||
address sizes : 40 bits physical, 48 bits virtual
|
||||
power management: ts fid vid ttp tm stc
|
||||
|
28
tests/nodeinfodata/linux-nodeinfo-2.meminfo
Normal file
28
tests/nodeinfodata/linux-nodeinfo-2.meminfo
Normal file
@ -0,0 +1,28 @@
|
||||
MemTotal: 4059540 kB
|
||||
MemFree: 3525008 kB
|
||||
Buffers: 24480 kB
|
||||
Cached: 282300 kB
|
||||
SwapCached: 0 kB
|
||||
Active: 230980 kB
|
||||
Inactive: 243276 kB
|
||||
SwapTotal: 2031608 kB
|
||||
SwapFree: 2031608 kB
|
||||
Dirty: 200 kB
|
||||
Writeback: 0 kB
|
||||
AnonPages: 167376 kB
|
||||
Mapped: 31204 kB
|
||||
Slab: 34904 kB
|
||||
SReclaimable: 15544 kB
|
||||
SUnreclaim: 19360 kB
|
||||
PageTables: 7704 kB
|
||||
NFS_Unstable: 0 kB
|
||||
Bounce: 0 kB
|
||||
CommitLimit: 4061376 kB
|
||||
Committed_AS: 265176 kB
|
||||
VmallocTotal: 34359738367 kB
|
||||
VmallocUsed: 1736 kB
|
||||
VmallocChunk: 34359736147 kB
|
||||
HugePages_Total: 0
|
||||
HugePages_Free: 0
|
||||
HugePages_Rsvd: 0
|
||||
Hugepagesize: 2048 kB
|
1
tests/nodeinfodata/linux-nodeinfo-2.txt
Normal file
1
tests/nodeinfodata/linux-nodeinfo-2.txt
Normal file
@ -0,0 +1 @@
|
||||
CPUs: 2, MHz: 2211, Nodes: 1, Sockets: 1, Cores: 2, Threads: 1, Memory: 4059540
|
99
tests/nodeinfodata/linux-nodeinfo-3.cpuinfo
Normal file
99
tests/nodeinfodata/linux-nodeinfo-3.cpuinfo
Normal file
@ -0,0 +1,99 @@
|
||||
processor : 0
|
||||
vendor_id : GenuineIntel
|
||||
cpu family : 6
|
||||
model : 15
|
||||
model name : Intel(R) Xeon(R) CPU 5110 @ 1.60GHz
|
||||
stepping : 6
|
||||
cpu MHz : 1595.925
|
||||
cache size : 4096 KB
|
||||
physical id : 0
|
||||
siblings : 2
|
||||
core id : 0
|
||||
cpu cores : 2
|
||||
fpu : yes
|
||||
fpu_exception : yes
|
||||
cpuid level : 10
|
||||
wp : yes
|
||||
flags : fpu vme de pse tsc msr pae mce cx8 apic sep mtrr pge mca cmov
|
||||
pat pse36 clflush dts acpi mmx fxsr sse sse2 ss ht tm syscall lm constant_tsc
|
||||
pni monitor ds_cpl vmx tm2 ssse3 cx16 xtpr dca lahf_lm
|
||||
bogomips : 3193.88
|
||||
clflush size : 64
|
||||
cache_alignment : 64
|
||||
address sizes : 36 bits physical, 48 bits virtual
|
||||
power management:
|
||||
|
||||
processor : 1
|
||||
vendor_id : GenuineIntel
|
||||
cpu family : 6
|
||||
model : 15
|
||||
model name : Intel(R) Xeon(R) CPU 5110 @ 1.60GHz
|
||||
stepping : 6
|
||||
cpu MHz : 1595.925
|
||||
cache size : 4096 KB
|
||||
physical id : 3
|
||||
siblings : 2
|
||||
core id : 0
|
||||
cpu cores : 2
|
||||
fpu : yes
|
||||
fpu_exception : yes
|
||||
cpuid level : 10
|
||||
wp : yes
|
||||
flags : fpu vme de pse tsc msr pae mce cx8 apic sep mtrr pge mca cmov
|
||||
pat pse36 clflush dts acpi mmx fxsr sse sse2 ss ht tm syscall lm constant_tsc
|
||||
pni monitor ds_cpl vmx tm2 ssse3 cx16 xtpr dca lahf_lm
|
||||
bogomips : 3191.89
|
||||
clflush size : 64
|
||||
cache_alignment : 64
|
||||
address sizes : 36 bits physical, 48 bits virtual
|
||||
power management:
|
||||
|
||||
processor : 2
|
||||
vendor_id : GenuineIntel
|
||||
cpu family : 6
|
||||
model : 15
|
||||
model name : Intel(R) Xeon(R) CPU 5110 @ 1.60GHz
|
||||
stepping : 6
|
||||
cpu MHz : 1595.925
|
||||
cache size : 4096 KB
|
||||
physical id : 0
|
||||
siblings : 2
|
||||
core id : 1
|
||||
cpu cores : 2
|
||||
fpu : yes
|
||||
fpu_exception : yes
|
||||
cpuid level : 10
|
||||
wp : yes
|
||||
flags : fpu vme de pse tsc msr pae mce cx8 apic sep mtrr pge mca cmov
|
||||
pat pse36 clflush dts acpi mmx fxsr sse sse2 ss ht tm syscall lm constant_tsc
|
||||
pni monitor ds_cpl vmx tm2 ssse3 cx16 xtpr dca lahf_lm
|
||||
bogomips : 3191.88
|
||||
clflush size : 64
|
||||
cache_alignment : 64
|
||||
address sizes : 36 bits physical, 48 bits virtual
|
||||
power management:
|
||||
|
||||
processor : 3
|
||||
vendor_id : GenuineIntel
|
||||
cpu family : 6
|
||||
model : 15
|
||||
model name : Intel(R) Xeon(R) CPU 5110 @ 1.60GHz
|
||||
stepping : 6
|
||||
cpu MHz : 1595.925
|
||||
cache size : 4096 KB
|
||||
physical id : 3
|
||||
siblings : 2
|
||||
core id : 1
|
||||
cpu cores : 2
|
||||
fpu : yes
|
||||
fpu_exception : yes
|
||||
cpuid level : 10
|
||||
wp : yes
|
||||
flags : fpu vme de pse tsc msr pae mce cx8 apic sep mtrr pge mca cmov
|
||||
pat pse36 clflush dts acpi mmx fxsr sse sse2 ss ht tm syscall lm constant_tsc
|
||||
pni monitor ds_cpl vmx tm2 ssse3 cx16 xtpr dca lahf_lm
|
||||
bogomips : 3191.87
|
||||
clflush size : 64
|
||||
cache_alignment : 64
|
||||
address sizes : 36 bits physical, 48 bits virtual
|
||||
power management:
|
28
tests/nodeinfodata/linux-nodeinfo-3.meminfo
Normal file
28
tests/nodeinfodata/linux-nodeinfo-3.meminfo
Normal file
@ -0,0 +1,28 @@
|
||||
MemTotal: 4059272 kB
|
||||
MemFree: 3532828 kB
|
||||
Buffers: 16644 kB
|
||||
Cached: 286152 kB
|
||||
SwapCached: 0 kB
|
||||
Active: 252032 kB
|
||||
Inactive: 220148 kB
|
||||
SwapTotal: 2031608 kB
|
||||
SwapFree: 2031608 kB
|
||||
Dirty: 76 kB
|
||||
Writeback: 0 kB
|
||||
AnonPages: 169548 kB
|
||||
Mapped: 25456 kB
|
||||
Slab: 27260 kB
|
||||
SReclaimable: 9512 kB
|
||||
SUnreclaim: 17748 kB
|
||||
PageTables: 7552 kB
|
||||
NFS_Unstable: 0 kB
|
||||
Bounce: 0 kB
|
||||
CommitLimit: 4061244 kB
|
||||
Committed_AS: 278572 kB
|
||||
VmallocTotal: 34359738367 kB
|
||||
VmallocUsed: 2044 kB
|
||||
VmallocChunk: 34359736107 kB
|
||||
HugePages_Total: 0
|
||||
HugePages_Free: 0
|
||||
HugePages_Rsvd: 0
|
||||
Hugepagesize: 2048 kB
|
1
tests/nodeinfodata/linux-nodeinfo-3.txt
Normal file
1
tests/nodeinfodata/linux-nodeinfo-3.txt
Normal file
@ -0,0 +1 @@
|
||||
CPUs: 4, MHz: 1595, Nodes: 1, Sockets: 2, Cores: 2, Threads: 1, Memory: 4059272
|
96
tests/nodeinfodata/linux-nodeinfo-4.cpuinfo
Normal file
96
tests/nodeinfodata/linux-nodeinfo-4.cpuinfo
Normal file
@ -0,0 +1,96 @@
|
||||
processor : 0
|
||||
vendor_id : AuthenticAMD
|
||||
cpu family : 16
|
||||
model : 2
|
||||
model name : AMD Processor model unknown
|
||||
stepping : 0
|
||||
cpu MHz : 1000.000
|
||||
cache size : 512 KB
|
||||
physical id : 0
|
||||
siblings : 4
|
||||
core id : 0
|
||||
cpu cores : 4
|
||||
fpu : yes
|
||||
fpu_exception : yes
|
||||
cpuid level : 5
|
||||
wp : yes
|
||||
flags : fpu vme de pse tsc msr pae mce cx8 apic sep mtrr pge mca cmov pat pse36 clflush mmx fxsr sse sse2 ht syscall nx mmxext fxsr_opt pdpe1gb rdtscp lm 3dnowext 3dnow constant_tsc pni monitor cx16 popcnt lahf_lm cmp_legacy svm extapic cr8_legacy altmovcr8 abm sse4a misalignsse 3dnowprefetch osvw
|
||||
bogomips : 4131.46
|
||||
TLB size : 1024 4K pages
|
||||
clflush size : 64
|
||||
cache_alignment : 64
|
||||
address sizes : 48 bits physical, 48 bits virtual
|
||||
power management: ts ttp tm stc 100mhzsteps hwpstate [8]
|
||||
|
||||
processor : 1
|
||||
vendor_id : AuthenticAMD
|
||||
cpu family : 16
|
||||
model : 2
|
||||
model name : AMD Processor model unknown
|
||||
stepping : 0
|
||||
cpu MHz : 1000.000
|
||||
cache size : 512 KB
|
||||
physical id : 0
|
||||
siblings : 4
|
||||
core id : 1
|
||||
cpu cores : 4
|
||||
fpu : yes
|
||||
fpu_exception : yes
|
||||
cpuid level : 5
|
||||
wp : yes
|
||||
flags : fpu vme de pse tsc msr pae mce cx8 apic sep mtrr pge mca cmov pat pse36 clflush mmx fxsr sse sse2 ht syscall nx mmxext fxsr_opt pdpe1gb rdtscp lm 3dnowext 3dnow constant_tsc pni monitor cx16 popcnt lahf_lm cmp_legacy svm extapic cr8_legacy altmovcr8 abm sse4a misalignsse 3dnowprefetch osvw
|
||||
bogomips : 3200.13
|
||||
TLB size : 1024 4K pages
|
||||
clflush size : 64
|
||||
cache_alignment : 64
|
||||
address sizes : 48 bits physical, 48 bits virtual
|
||||
power management: ts ttp tm stc 100mhzsteps hwpstate [8]
|
||||
|
||||
processor : 2
|
||||
vendor_id : AuthenticAMD
|
||||
cpu family : 16
|
||||
model : 2
|
||||
model name : AMD Processor model unknown
|
||||
stepping : 0
|
||||
cpu MHz : 1000.000
|
||||
cache size : 512 KB
|
||||
physical id : 0
|
||||
siblings : 4
|
||||
core id : 2
|
||||
cpu cores : 4
|
||||
fpu : yes
|
||||
fpu_exception : yes
|
||||
cpuid level : 5
|
||||
wp : yes
|
||||
flags : fpu vme de pse tsc msr pae mce cx8 apic sep mtrr pge mca cmov pat pse36 clflush mmx fxsr sse sse2 ht syscall nx mmxext fxsr_opt pdpe1gb rdtscp lm 3dnowext 3dnow constant_tsc pni monitor cx16 popcnt lahf_lm cmp_legacy svm extapic cr8_legacy altmovcr8 abm sse4a misalignsse 3dnowprefetch osvw
|
||||
bogomips : 3200.14
|
||||
TLB size : 1024 4K pages
|
||||
clflush size : 64
|
||||
cache_alignment : 64
|
||||
address sizes : 48 bits physical, 48 bits virtual
|
||||
power management: ts ttp tm stc 100mhzsteps hwpstate [8]
|
||||
|
||||
processor : 3
|
||||
vendor_id : AuthenticAMD
|
||||
cpu family : 16
|
||||
model : 2
|
||||
model name : AMD Processor model unknown
|
||||
stepping : 0
|
||||
cpu MHz : 1000.000
|
||||
cache size : 512 KB
|
||||
physical id : 0
|
||||
siblings : 4
|
||||
core id : 3
|
||||
cpu cores : 4
|
||||
fpu : yes
|
||||
fpu_exception : yes
|
||||
cpuid level : 5
|
||||
wp : yes
|
||||
flags : fpu vme de pse tsc msr pae mce cx8 apic sep mtrr pge mca cmov pat pse36 clflush mmx fxsr sse sse2 ht syscall nx mmxext fxsr_opt pdpe1gb rdtscp lm 3dnowext 3dnow constant_tsc pni monitor cx16 popcnt lahf_lm cmp_legacy svm extapic cr8_legacy altmovcr8 abm sse4a misalignsse 3dnowprefetch osvw
|
||||
bogomips : 3200.01
|
||||
TLB size : 1024 4K pages
|
||||
clflush size : 64
|
||||
cache_alignment : 64
|
||||
address sizes : 48 bits physical, 48 bits virtual
|
||||
power management: ts ttp tm stc 100mhzsteps hwpstate [8]
|
||||
|
28
tests/nodeinfodata/linux-nodeinfo-4.meminfo
Normal file
28
tests/nodeinfodata/linux-nodeinfo-4.meminfo
Normal file
@ -0,0 +1,28 @@
|
||||
MemTotal: 4059272 kB
|
||||
MemFree: 3532828 kB
|
||||
Buffers: 16644 kB
|
||||
Cached: 286152 kB
|
||||
SwapCached: 0 kB
|
||||
Active: 252032 kB
|
||||
Inactive: 220148 kB
|
||||
SwapTotal: 2031608 kB
|
||||
SwapFree: 2031608 kB
|
||||
Dirty: 76 kB
|
||||
Writeback: 0 kB
|
||||
AnonPages: 169548 kB
|
||||
Mapped: 25456 kB
|
||||
Slab: 27260 kB
|
||||
SReclaimable: 9512 kB
|
||||
SUnreclaim: 17748 kB
|
||||
PageTables: 7552 kB
|
||||
NFS_Unstable: 0 kB
|
||||
Bounce: 0 kB
|
||||
CommitLimit: 4061244 kB
|
||||
Committed_AS: 278572 kB
|
||||
VmallocTotal: 34359738367 kB
|
||||
VmallocUsed: 2044 kB
|
||||
VmallocChunk: 34359736107 kB
|
||||
HugePages_Total: 0
|
||||
HugePages_Free: 0
|
||||
HugePages_Rsvd: 0
|
||||
Hugepagesize: 2048 kB
|
1
tests/nodeinfodata/linux-nodeinfo-4.txt
Normal file
1
tests/nodeinfodata/linux-nodeinfo-4.txt
Normal file
@ -0,0 +1 @@
|
||||
CPUs: 4, MHz: 1000, Nodes: 1, Sockets: 1, Cores: 4, Threads: 1, Memory: 4059272
|
96
tests/nodeinfodata/linux-nodeinfo-5.cpuinfo
Normal file
96
tests/nodeinfodata/linux-nodeinfo-5.cpuinfo
Normal file
@ -0,0 +1,96 @@
|
||||
processor : 0
|
||||
vendor_id : AuthenticAMD
|
||||
cpu family : 15
|
||||
model : 65
|
||||
model name : Dual-Core AMD Opteron(tm) Processor 2220
|
||||
stepping : 3
|
||||
cpu MHz : 2814.921
|
||||
cache size : 1024 KB
|
||||
physical id : 0
|
||||
siblings : 2
|
||||
core id : 0
|
||||
cpu cores : 2
|
||||
fpu : yes
|
||||
fpu_exception : yes
|
||||
cpuid level : 1
|
||||
wp : yes
|
||||
flags : fpu vme de pse tsc msr pae mce cx8 apic sep mtrr pge mca cmov pat pse36 clflush mmx fxsr sse sse2 ht syscall nx mmxext fxsr_opt rdtscp lm 3dnowext 3dnow pni cx16 lahf_lm cmp_legacy svm extapic cr8_legacy
|
||||
bogomips : 5633.58
|
||||
TLB size : 1024 4K pages
|
||||
clflush size : 64
|
||||
cache_alignment : 64
|
||||
address sizes : 40 bits physical, 48 bits virtual
|
||||
power management: ts fid vid ttp tm stc
|
||||
|
||||
processor : 1
|
||||
vendor_id : AuthenticAMD
|
||||
cpu family : 15
|
||||
model : 65
|
||||
model name : Dual-Core AMD Opteron(tm) Processor 2220
|
||||
stepping : 3
|
||||
cpu MHz : 2814.921
|
||||
cache size : 1024 KB
|
||||
physical id : 0
|
||||
siblings : 2
|
||||
core id : 1
|
||||
cpu cores : 2
|
||||
fpu : yes
|
||||
fpu_exception : yes
|
||||
cpuid level : 1
|
||||
wp : yes
|
||||
flags : fpu vme de pse tsc msr pae mce cx8 apic sep mtrr pge mca cmov pat pse36 clflush mmx fxsr sse sse2 ht syscall nx mmxext fxsr_opt rdtscp lm 3dnowext 3dnow pni cx16 lahf_lm cmp_legacy svm extapic cr8_legacy
|
||||
bogomips : 5629.01
|
||||
TLB size : 1024 4K pages
|
||||
clflush size : 64
|
||||
cache_alignment : 64
|
||||
address sizes : 40 bits physical, 48 bits virtual
|
||||
power management: ts fid vid ttp tm stc
|
||||
|
||||
processor : 2
|
||||
vendor_id : AuthenticAMD
|
||||
cpu family : 15
|
||||
model : 65
|
||||
model name : Dual-Core AMD Opteron(tm) Processor 2220
|
||||
stepping : 3
|
||||
cpu MHz : 2814.921
|
||||
cache size : 1024 KB
|
||||
physical id : 1
|
||||
siblings : 2
|
||||
core id : 0
|
||||
cpu cores : 2
|
||||
fpu : yes
|
||||
fpu_exception : yes
|
||||
cpuid level : 1
|
||||
wp : yes
|
||||
flags : fpu vme de pse tsc msr pae mce cx8 apic sep mtrr pge mca cmov pat pse36 clflush mmx fxsr sse sse2 ht syscall nx mmxext fxsr_opt rdtscp lm 3dnowext 3dnow pni cx16 lahf_lm cmp_legacy svm extapic cr8_legacy
|
||||
bogomips : 5628.94
|
||||
TLB size : 1024 4K pages
|
||||
clflush size : 64
|
||||
cache_alignment : 64
|
||||
address sizes : 40 bits physical, 48 bits virtual
|
||||
power management: ts fid vid ttp tm stc
|
||||
|
||||
processor : 3
|
||||
vendor_id : AuthenticAMD
|
||||
cpu family : 15
|
||||
model : 65
|
||||
model name : Dual-Core AMD Opteron(tm) Processor 2220
|
||||
stepping : 3
|
||||
cpu MHz : 2814.921
|
||||
cache size : 1024 KB
|
||||
physical id : 1
|
||||
siblings : 2
|
||||
core id : 1
|
||||
cpu cores : 2
|
||||
fpu : yes
|
||||
fpu_exception : yes
|
||||
cpuid level : 1
|
||||
wp : yes
|
||||
flags : fpu vme de pse tsc msr pae mce cx8 apic sep mtrr pge mca cmov pat pse36 clflush mmx fxsr sse sse2 ht syscall nx mmxext fxsr_opt rdtscp lm 3dnowext 3dnow pni cx16 lahf_lm cmp_legacy svm extapic cr8_legacy
|
||||
bogomips : 5628.86
|
||||
TLB size : 1024 4K pages
|
||||
clflush size : 64
|
||||
cache_alignment : 64
|
||||
address sizes : 40 bits physical, 48 bits virtual
|
||||
power management: ts fid vid ttp tm stc
|
||||
|
28
tests/nodeinfodata/linux-nodeinfo-5.meminfo
Normal file
28
tests/nodeinfodata/linux-nodeinfo-5.meminfo
Normal file
@ -0,0 +1,28 @@
|
||||
MemTotal: 4059272 kB
|
||||
MemFree: 3532828 kB
|
||||
Buffers: 16644 kB
|
||||
Cached: 286152 kB
|
||||
SwapCached: 0 kB
|
||||
Active: 252032 kB
|
||||
Inactive: 220148 kB
|
||||
SwapTotal: 2031608 kB
|
||||
SwapFree: 2031608 kB
|
||||
Dirty: 76 kB
|
||||
Writeback: 0 kB
|
||||
AnonPages: 169548 kB
|
||||
Mapped: 25456 kB
|
||||
Slab: 27260 kB
|
||||
SReclaimable: 9512 kB
|
||||
SUnreclaim: 17748 kB
|
||||
PageTables: 7552 kB
|
||||
NFS_Unstable: 0 kB
|
||||
Bounce: 0 kB
|
||||
CommitLimit: 4061244 kB
|
||||
Committed_AS: 278572 kB
|
||||
VmallocTotal: 34359738367 kB
|
||||
VmallocUsed: 2044 kB
|
||||
VmallocChunk: 34359736107 kB
|
||||
HugePages_Total: 0
|
||||
HugePages_Free: 0
|
||||
HugePages_Rsvd: 0
|
||||
Hugepagesize: 2048 kB
|
1
tests/nodeinfodata/linux-nodeinfo-5.txt
Normal file
1
tests/nodeinfodata/linux-nodeinfo-5.txt
Normal file
@ -0,0 +1 @@
|
||||
CPUs: 4, MHz: 2814, Nodes: 1, Sockets: 2, Cores: 2, Threads: 1, Memory: 4059272
|
96
tests/nodeinfodata/linux-nodeinfo-6.cpuinfo
Normal file
96
tests/nodeinfodata/linux-nodeinfo-6.cpuinfo
Normal file
@ -0,0 +1,96 @@
|
||||
processor : 0
|
||||
vendor_id : AuthenticAMD
|
||||
cpu family : 15
|
||||
model : 65
|
||||
model name : Dual-Core AMD Opteron(tm) Processor 2218
|
||||
stepping : 2
|
||||
cpu MHz : 1000.000
|
||||
cache size : 1024 KB
|
||||
physical id : 0
|
||||
siblings : 2
|
||||
core id : 0
|
||||
cpu cores : 2
|
||||
fpu : yes
|
||||
fpu_exception : yes
|
||||
cpuid level : 1
|
||||
wp : yes
|
||||
flags : fpu vme de pse tsc msr pae mce cx8 apic sep mtrr pge mca cmov pat pse36 clflush mmx fxsr sse sse2 ht syscall nx mmxext fxsr_opt rdtscp lm 3dnowext 3dnow pni cx16 lahf_lm cmp_legacy svm cr8_legacy
|
||||
bogomips : 1999.99
|
||||
TLB size : 1024 4K pages
|
||||
clflush size : 64
|
||||
cache_alignment : 64
|
||||
address sizes : 40 bits physical, 48 bits virtual
|
||||
power management: ts fid vid ttp tm stc
|
||||
|
||||
processor : 1
|
||||
vendor_id : AuthenticAMD
|
||||
cpu family : 15
|
||||
model : 65
|
||||
model name : Dual-Core AMD Opteron(tm) Processor 2218
|
||||
stepping : 2
|
||||
cpu MHz : 1000.000
|
||||
cache size : 1024 KB
|
||||
physical id : 1
|
||||
siblings : 2
|
||||
core id : 0
|
||||
cpu cores : 2
|
||||
fpu : yes
|
||||
fpu_exception : yes
|
||||
cpuid level : 1
|
||||
wp : yes
|
||||
flags : fpu vme de pse tsc msr pae mce cx8 apic sep mtrr pge mca cmov pat pse36 clflush mmx fxsr sse sse2 ht syscall nx mmxext fxsr_opt rdtscp lm 3dnowext 3dnow pni cx16 lahf_lm cmp_legacy svm cr8_legacy
|
||||
bogomips : 1999.99
|
||||
TLB size : 1024 4K pages
|
||||
clflush size : 64
|
||||
cache_alignment : 64
|
||||
address sizes : 40 bits physical, 48 bits virtual
|
||||
power management: ts fid vid ttp tm stc
|
||||
|
||||
processor : 2
|
||||
vendor_id : AuthenticAMD
|
||||
cpu family : 15
|
||||
model : 65
|
||||
model name : Dual-Core AMD Opteron(tm) Processor 2218
|
||||
stepping : 2
|
||||
cpu MHz : 1000.000
|
||||
cache size : 1024 KB
|
||||
physical id : 0
|
||||
siblings : 2
|
||||
core id : 1
|
||||
cpu cores : 2
|
||||
fpu : yes
|
||||
fpu_exception : yes
|
||||
cpuid level : 1
|
||||
wp : yes
|
||||
flags : fpu vme de pse tsc msr pae mce cx8 apic sep mtrr pge mca cmov pat pse36 clflush mmx fxsr sse sse2 ht syscall nx mmxext fxsr_opt rdtscp lm 3dnowext 3dnow pni cx16 lahf_lm cmp_legacy svm cr8_legacy
|
||||
bogomips : 1999.99
|
||||
TLB size : 1024 4K pages
|
||||
clflush size : 64
|
||||
cache_alignment : 64
|
||||
address sizes : 40 bits physical, 48 bits virtual
|
||||
power management: ts fid vid ttp tm stc
|
||||
|
||||
processor : 3
|
||||
vendor_id : AuthenticAMD
|
||||
cpu family : 15
|
||||
model : 65
|
||||
model name : Dual-Core AMD Opteron(tm) Processor 2218
|
||||
stepping : 2
|
||||
cpu MHz : 1000.000
|
||||
cache size : 1024 KB
|
||||
physical id : 1
|
||||
siblings : 2
|
||||
core id : 1
|
||||
cpu cores : 2
|
||||
fpu : yes
|
||||
fpu_exception : yes
|
||||
cpuid level : 1
|
||||
wp : yes
|
||||
flags : fpu vme de pse tsc msr pae mce cx8 apic sep mtrr pge mca cmov pat pse36 clflush mmx fxsr sse sse2 ht syscall nx mmxext fxsr_opt rdtscp lm 3dnowext 3dnow pni cx16 lahf_lm cmp_legacy svm cr8_legacy
|
||||
bogomips : 1999.99
|
||||
TLB size : 1024 4K pages
|
||||
clflush size : 64
|
||||
cache_alignment : 64
|
||||
address sizes : 40 bits physical, 48 bits virtual
|
||||
power management: ts fid vid ttp tm stc
|
||||
|
28
tests/nodeinfodata/linux-nodeinfo-6.meminfo
Normal file
28
tests/nodeinfodata/linux-nodeinfo-6.meminfo
Normal file
@ -0,0 +1,28 @@
|
||||
MemTotal: 4059272 kB
|
||||
MemFree: 3532828 kB
|
||||
Buffers: 16644 kB
|
||||
Cached: 286152 kB
|
||||
SwapCached: 0 kB
|
||||
Active: 252032 kB
|
||||
Inactive: 220148 kB
|
||||
SwapTotal: 2031608 kB
|
||||
SwapFree: 2031608 kB
|
||||
Dirty: 76 kB
|
||||
Writeback: 0 kB
|
||||
AnonPages: 169548 kB
|
||||
Mapped: 25456 kB
|
||||
Slab: 27260 kB
|
||||
SReclaimable: 9512 kB
|
||||
SUnreclaim: 17748 kB
|
||||
PageTables: 7552 kB
|
||||
NFS_Unstable: 0 kB
|
||||
Bounce: 0 kB
|
||||
CommitLimit: 4061244 kB
|
||||
Committed_AS: 278572 kB
|
||||
VmallocTotal: 34359738367 kB
|
||||
VmallocUsed: 2044 kB
|
||||
VmallocChunk: 34359736107 kB
|
||||
HugePages_Total: 0
|
||||
HugePages_Free: 0
|
||||
HugePages_Rsvd: 0
|
||||
Hugepagesize: 2048 kB
|
1
tests/nodeinfodata/linux-nodeinfo-6.txt
Normal file
1
tests/nodeinfodata/linux-nodeinfo-6.txt
Normal file
@ -0,0 +1 @@
|
||||
CPUs: 4, MHz: 1000, Nodes: 1, Sockets: 2, Cores: 2, Threads: 1, Memory: 4059272
|
117
tests/nodeinfotest.c
Normal file
117
tests/nodeinfotest.c
Normal file
@ -0,0 +1,117 @@
|
||||
#include <stdio.h>
|
||||
#include <stdlib.h>
|
||||
|
||||
#include "config.h"
|
||||
|
||||
#include <string.h>
|
||||
|
||||
#include "testutils.h"
|
||||
#include "internal.h"
|
||||
#include "nodeinfo.h"
|
||||
|
||||
static char *progname;
|
||||
|
||||
#define MAX_FILE 4096
|
||||
|
||||
#ifdef __linux__
|
||||
|
||||
extern int linuxNodeInfoCPUPopulate(virConnectPtr conn, FILE *cpuinfo, virNodeInfoPtr nodeinfo);
|
||||
extern int linuxNodeInfoMemPopulate(virConnectPtr conn, FILE *meminfo, virNodeInfoPtr nodeinfo);
|
||||
|
||||
static int linuxTestCompareFiles(const char *cpuinfofile, const char *meminfofile, const char *outputfile) {
|
||||
char actualData[MAX_FILE];
|
||||
char expectData[MAX_FILE];
|
||||
char *expect = &expectData[0];
|
||||
virNodeInfo nodeinfo;
|
||||
FILE *cpuinfo, *meminfo;
|
||||
|
||||
if (virtTestLoadFile(outputfile, &expect, MAX_FILE) < 0)
|
||||
return -1;
|
||||
|
||||
cpuinfo = fopen(cpuinfofile, "r");
|
||||
if (!cpuinfo)
|
||||
return -1;
|
||||
if (linuxNodeInfoCPUPopulate(NULL, cpuinfo, &nodeinfo) < 0) {
|
||||
fclose(cpuinfo);
|
||||
return -1;
|
||||
}
|
||||
fclose(cpuinfo);
|
||||
|
||||
meminfo = fopen(meminfofile, "r");
|
||||
if (!meminfo)
|
||||
return -1;
|
||||
if (linuxNodeInfoMemPopulate(NULL, meminfo, &nodeinfo) < 0) {
|
||||
fclose(meminfo);
|
||||
return -1;
|
||||
}
|
||||
fclose(meminfo);
|
||||
|
||||
snprintf(actualData, MAX_FILE,
|
||||
"CPUs: %u, MHz: %u, Nodes: %u, Sockets: %u, Cores: %u, Threads: %u, Memory: %lu\n",
|
||||
nodeinfo.cpus, nodeinfo.mhz, nodeinfo.nodes, nodeinfo.sockets,
|
||||
nodeinfo.cores, nodeinfo.threads, nodeinfo.memory);
|
||||
|
||||
if (STRNEQ(actualData, expectData)) {
|
||||
if (getenv("DEBUG_TESTS")) {
|
||||
printf("Expect %d '%s'\n", (int)strlen(expectData), expectData);
|
||||
printf("Actual %d '%s'\n", (int)strlen(actualData), actualData);
|
||||
}
|
||||
return -1;
|
||||
}
|
||||
|
||||
return 0;
|
||||
}
|
||||
|
||||
|
||||
static int linuxTestNodeInfo(const void *data) {
|
||||
char cpuinfo[PATH_MAX];
|
||||
char meminfo[PATH_MAX];
|
||||
char output[PATH_MAX];
|
||||
snprintf(cpuinfo, PATH_MAX, "nodeinfodata/linux-%s.cpuinfo", (const char*)data);
|
||||
snprintf(meminfo, PATH_MAX, "nodeinfodata/linux-%s.meminfo", (const char*)data);
|
||||
snprintf(output, PATH_MAX, "nodeinfodata/linux-%s.txt", (const char*)data);
|
||||
return linuxTestCompareFiles(cpuinfo, meminfo, output);
|
||||
}
|
||||
#endif
|
||||
|
||||
|
||||
int
|
||||
main(int argc, char **argv)
|
||||
{
|
||||
int ret = 0;
|
||||
#ifdef __linux__
|
||||
int i;
|
||||
const char *nodeData[] = {
|
||||
"nodeinfo-1",
|
||||
"nodeinfo-2",
|
||||
"nodeinfo-3",
|
||||
"nodeinfo-4",
|
||||
"nodeinfo-5",
|
||||
"nodeinfo-6",
|
||||
};
|
||||
|
||||
progname = argv[0];
|
||||
|
||||
if (argc > 1) {
|
||||
fprintf(stderr, "Usage: %s\n", progname);
|
||||
exit(EXIT_FAILURE);
|
||||
}
|
||||
|
||||
virInitialize();
|
||||
|
||||
for (i = 0 ; i < (sizeof(nodeData)/sizeof(nodeData[0])) ; i++)
|
||||
if (virtTestRun(nodeData[i], 1, linuxTestNodeInfo, nodeData[i]) != 0)
|
||||
ret = -1;
|
||||
#endif
|
||||
|
||||
exit(ret==0 ? EXIT_SUCCESS : EXIT_FAILURE);
|
||||
}
|
||||
|
||||
/*
|
||||
* Local variables:
|
||||
* indent-tabs-mode: nil
|
||||
* c-indent-level: 4
|
||||
* c-basic-offset: 4
|
||||
* tab-width: 4
|
||||
* End:
|
||||
*/
|
Loading…
x
Reference in New Issue
Block a user