FreeBSD Bugzilla – Attachment 130447 Details for
Bug 174366
[new port] sysutils/i7z: A better i7 (and now i3, i5) reporting tool for Linux
Home
|
New
|
Browse
|
Search
|
[?]
|
Reports
|
Help
|
New Account
|
Log In
Remember
[x]
|
Forgot Password
Login:
[x]
file.shar
file.shar (text/plain), 15.42 KB, created by
Andrey Zonov
on 2012-12-11 12:00:00 UTC
(
hide
)
Description:
file.shar
Filename:
MIME Type:
Creator:
Andrey Zonov
Created:
2012-12-11 12:00:00 UTC
Size:
15.42 KB
patch
obsolete
># This is a shell archive. Save it in a file, remove anything before ># this line, and then unpack it by entering "sh file". Note, it may ># create directories; files and directories will be owned by you and ># have default permissions. ># ># This archive contains: ># ># sysutils/i7z ># sysutils/i7z/Makefile ># sysutils/i7z/pkg-descr ># sysutils/i7z/files ># sysutils/i7z/files/0002-Properly-legend-printing.patch ># sysutils/i7z/files/0001-Add-FreeBSD-support.patch ># sysutils/i7z/distinfo ># >echo c - sysutils/i7z >mkdir -p sysutils/i7z > /dev/null 2>&1 >echo x - sysutils/i7z/Makefile >sed 's/^X//' >sysutils/i7z/Makefile << '49e43cd3b3bd49f078f76875bc763ad6' >X# $FreeBSD$ >X >XPORTNAME= i7z >XPORTVERSION= 0.27.2 >XCATEGORIES= sysutils >XMASTER_SITES= http://${PORTNAME}.googlecode.com/files/ >X >XMAINTAINER= zont@FreeBSD.org >XCOMMENT= A better i7 (and now i3, i5) reporting tool for Linux >X >XUSE_GMAKE= yes >X >XPATCH_STRIP= -p1 >XEXTRA_PATCHES+= ${FILESDIR}/0001-Add-FreeBSD-support.patch >XEXTRA_PATCHES+= ${FILESDIR}/0002-Properly-legend-printing.patch >X >XPLIST_FILES= sbin/${PORTNAME} >XMAN1= ${PORTNAME}.1 >X >Xdo-install: >X ${INSTALL_PROGRAM} ${WRKSRC}/${PORTNAME} ${PREFIX}/sbin/ >X ${INSTALL_MAN} ${WRKSRC}/doc/i7z.man ${MANPREFIX}/man/man1/${MAN1} >X >X.include <bsd.port.mk> >49e43cd3b3bd49f078f76875bc763ad6 >echo x - sysutils/i7z/pkg-descr >sed 's/^X//' >sysutils/i7z/pkg-descr << '61939b48aef59d3cfb970d192ff475ae' >Xi7z prints out the C-states and temperature for i3, i5 and i7 based >XCore processors from Intel (including Nehalems, Sandy Bridge and >XIvy Bridge). >X >XWWW: http://code.google.com/p/i7z/ >61939b48aef59d3cfb970d192ff475ae >echo c - sysutils/i7z/files >mkdir -p sysutils/i7z/files > /dev/null 2>&1 >echo x - sysutils/i7z/files/0002-Properly-legend-printing.patch >sed 's/^X//' >sysutils/i7z/files/0002-Properly-legend-printing.patch << '7eb54190a4ae9b8619c4956752badfa3' >XFrom 58f1fb0f46952ba2dfe377de27e15a94e5228940 Mon Sep 17 00:00:00 2001 >XFrom: Andrey Zonov <zont@FreeBSD.org> >XDate: Tue, 30 Oct 2012 16:12:18 +0400 >XSubject: [PATCH 2/2] Properly legend printing >X >X--- >X i7z_Dual_Socket.c | 18 +++++++++--------- >X 1 file changed, 9 insertions(+), 9 deletions(-) >X >Xdiff --git a/i7z_Dual_Socket.c b/i7z_Dual_Socket.c >Xindex 04e40ea..1f8db8e 100644 >X--- a/i7z_Dual_Socket.c >X+++ b/i7z_Dual_Socket.c >X@@ -242,14 +242,14 @@ void print_i7z_socket(struct cpu_socket_info socket_0, int printw_offset, int PL >X >X if (socket_0.socket_num == 0) >X { >X- mvprintw (31, 0, "C0 = Processor running without halting"); >X- mvprintw (32, 0, "C1 = Processor running with halts (States >C0 are power saver)"); >X- mvprintw (33, 0, "C3 = Cores running with PLL turned off and core cache turned off"); >X- mvprintw (34, 0, "C6 = Everything in C3 + core state saved to last level cache"); >X- mvprintw (35, 0, " Above values in table are in percentage over the last 1 sec"); >X- mvprintw (36, 0, "[core-id] refers to core-id number in /proc/cpuinfo"); >X- mvprintw (37, 0, "'Garbage Values' message printed when garbage values are read"); >X- mvprintw (38, 0, " Ctrl+C to exit"); >X+ mvprintw (3 + (socket_0.max_cpu+8)*2, 0, "C0 = Processor running without halting"); >X+ mvprintw (4 + (socket_0.max_cpu+8)*2, 0, "C1 = Processor running with halts (States >C0 are power saver)"); >X+ mvprintw (5 + (socket_0.max_cpu+8)*2, 0, "C3 = Cores running with PLL turned off and core cache turned off"); >X+ mvprintw (6 + (socket_0.max_cpu+8)*2, 0, "C6 = Everything in C3 + core state saved to last level cache"); >X+ mvprintw (7 + (socket_0.max_cpu+8)*2, 0, " Above values in table are in percentage over the last 1 sec"); >X+ mvprintw (8 + (socket_0.max_cpu+8)*2, 0, "[core-id] refers to core-id number in /proc/cpuinfo"); >X+ mvprintw (9 + (socket_0.max_cpu+8)*2, 0, "'Garbage Values' message printed when garbage values are read"); >X+ mvprintw (10 + (socket_0.max_cpu+8)*2, 0, " Ctrl+C to exit"); >X } >X >X numCPUs = core_list_size_phy; >X@@ -763,7 +763,7 @@ void print_i7z () >X C3_time[socket_num], C6_time[socket_num], tvstart[socket_num], tvstop[socket_num], &max_observed_cpu_socket2); >X }else{*/ >X socket_num=1; >X- printw_offset=14; >X+ printw_offset=socket_0.max_cpu+8; >X print_i7z_socket(socket_1, printw_offset, PLATFORM_INFO_MSR, PLATFORM_INFO_MSR_high, PLATFORM_INFO_MSR_low, >X online_cpus, cpu_freq_cpuinfo, one_second_sleep, TURBO_MODE, HT_ON_str, &kk_2, >X old_val_CORE[socket_num], old_val_REF[socket_num], old_val_C3[socket_num], old_val_C6[socket_num], old_val_C7[socket_num], >X-- >X1.7.11.5 >X >7eb54190a4ae9b8619c4956752badfa3 >echo x - sysutils/i7z/files/0001-Add-FreeBSD-support.patch >sed 's/^X//' >sysutils/i7z/files/0001-Add-FreeBSD-support.patch << '0ba15b6b48880dc18ca12f7b949e6097' >XFrom 546bfa37f0c9aa1ef59fc8950e29c2a3ab1398c6 Mon Sep 17 00:00:00 2001 >XFrom: Andrey Zonov <zont@FreeBSD.org> >XDate: Tue, 30 Oct 2012 01:24:37 +0400 >XSubject: [PATCH 1/2] Add FreeBSD support >X >X--- >X Makefile | 2 +- >X cpuinfo.c | 44 ++++++++++++++++++++++ >X helper_functions.c | 108 ++++++++++++++++++++++++++++++++++++++++++++++++++--- >X i7z.c | 4 ++ >X 4 files changed, 152 insertions(+), 6 deletions(-) >X >Xdiff --git a/Makefile b/Makefile >Xindex 763dbb1..a9809e8 100644 >X--- a/Makefile >X+++ b/Makefile >X@@ -6,7 +6,7 @@ >X >X #explicitly disable two scheduling flags as they cause segfaults, two more seem to crash the GUI version so putting them >X #here >X-CFLAGS_FOR_AVOIDING_SEG_FAULT = -fno-schedule-insns2 -fno-schedule-insns -fno-inline-small-functions -fno-caller-saves >X+CFLAGS_FOR_AVOIDING_SEG_FAULT = -fno-schedule-insns2 -fno-schedule-insns -fno-caller-saves >X CFLAGS ?= -O3 >X CFLAGS += $(CFLAGS_FOR_AVOIDING_SEG_FAULT) -D_GNU_SOURCE -D_FILE_OFFSET_BITS=64 -DBUILD_MAIN -Wimplicit-function-declaration >X >Xdiff --git a/cpuinfo.c b/cpuinfo.c >Xindex 5b5cea0..ea0abf9 100644 >X--- a/cpuinfo.c >X+++ b/cpuinfo.c >X@@ -147,6 +147,7 @@ void print_socket_information(struct cpu_socket_info* socket) >X printf("Socket-%d [num of cpus %d physical %d logical %d] %s\n",socket->socket_num,socket->max_cpu,socket->num_physical_cores,socket->num_logical_cores,socket_list); >X } >X >X+#ifdef __linux__ >X void construct_CPU_Heirarchy_info(struct cpu_heirarchy_info* chi) >X { >X int i; >X@@ -193,7 +194,50 @@ void construct_CPU_Heirarchy_info(struct cpu_heirarchy_info* chi) >X chi->max_online_cpu = it_processor_num+1; >X >X } >X+#elif __FreeBSD__ >X+void construct_CPU_Heirarchy_info(struct cpu_heirarchy_info* chi) >X+{ >X+ int i; >X+ FILE *fp = fopen("/var/run/dmesg.boot", "r"); >X+ char strinfo[200]; >X+ char *tmp; >X >X+ int processor_num, physicalid_num = 0, coreid_num = 0; >X+ int ncpu = 0, packages, cores, threads; >X+ >X+ if (fp!=NULL) { >X+ while ( fgets(strinfo,200,fp) != NULL) { >X+ if (strstr(strinfo, "FreeBSD/SMP: ") != NULL) { >X+ if ((tmp = strstr(strinfo, "Multiprocessor System Detected: ")) != NULL) { >X+ tmp = strchr(tmp, ':'); >X+ tmp++; /* skip space */ >X+ ncpu = atoi(tmp); >X+ } else { >X+ tmp = strchr(strinfo, ' '); >X+ tmp++; /* skip space */ >X+ packages = atoi(tmp); >X+ tmp = strchr(tmp, 'x'); >X+ tmp++; /* skip space */ >X+ cores = atoi(tmp); >X+ threads = ncpu / (packages * cores); >X+ } >X+ } >X+ } >X+ for (i = 0; i < ncpu; i++) { >X+ processor_num = i; >X+ if ((coreid_num + 1) == cores) >X+ physicalid_num++; >X+ physicalid_num %= packages; >X+ coreid_num = processor_num % cores; >X+ >X+ chi->processor_num[i] = processor_num; >X+ chi->package_num[i] = physicalid_num; >X+ chi->coreid_num[i] = coreid_num; >X+ } >X+ } >X+ chi->max_online_cpu = ncpu; >X+} >X+#endif >X void print_CPU_Heirarchy(struct cpu_heirarchy_info chi) >X { >X int i; >Xdiff --git a/helper_functions.c b/helper_functions.c >Xindex 2f8da87..2f7e61c 100644 >X--- a/helper_functions.c >X+++ b/helper_functions.c >X@@ -30,6 +30,11 @@ >X #include <inttypes.h> >X #include <sys/types.h> >X #include <sys/time.h> >X+#ifdef __FreeBSD__ >X+#include <sys/cpuctl.h> >X+#include <sys/ioctl.h> >X+#include <sys/sysctl.h> >X+#endif >X #include <time.h> >X #include <assert.h> >X #include <math.h> >X@@ -45,6 +50,14 @@ bool E7_mp_present=false; >X #define IA32_TEMPERATURE_TARGET 0x1a2 >X #define IA32_PACKAGE_THERM_STATUS 0x1b1 >X >X+#ifdef __linux__ >X+#define _DEV_CPU_MSR "/dev/cpu/%d/msr" >X+#define _DEV_CPU0_MSR "/dev/cpu/0/msr" >X+#elif __FreeBSD__ >X+#define _DEV_CPU_MSR "/dev/cpuctl%d" >X+#define _DEV_CPU0_MSR "/dev/cpuctl0" >X+#endif >X+ >X int Get_Bits_Value(unsigned long val,int highbit, int lowbit){ >X unsigned long data = val; >X int bits = highbit - lowbit + 1; >X@@ -234,7 +247,7 @@ uint64_t get_msr_value (int cpu, uint32_t reg, unsigned int highbit, >X int bits; >X *error_indx =0; >X >X- sprintf (msr_file_name, "/dev/cpu/%d/msr", cpu); >X+ sprintf (msr_file_name, _DEV_CPU_MSR, cpu); >X fd = open (msr_file_name, O_RDONLY); >X if (fd < 0) >X { >X@@ -255,11 +268,21 @@ uint64_t get_msr_value (int cpu, uint32_t reg, unsigned int highbit, >X } >X } >X >X+#ifdef __linux__ >X if (pread (fd, &data, sizeof data, reg) != sizeof data) >X { >X perror ("rdmsr:pread"); >X exit (127); >X } >X+#elif __FreeBSD__ >X+ cpuctl_msr_args_t args; >X+ args.msr = reg; >X+ if (ioctl (fd, CPUCTL_RDMSR, &args) < 0) { >X+ perror ("rdmsr:ioctl"); >X+ exit (127); >X+ } >X+ data = args.data; >X+#endif >X >X close (fd); >X >X@@ -287,7 +310,7 @@ uint64_t set_msr_value (int cpu, uint32_t reg, uint64_t data) >X int fd; >X char msr_file_name[64]; >X >X- sprintf (msr_file_name, "/dev/cpu/%d/msr", cpu); >X+ sprintf (msr_file_name, _DEV_CPU_MSR, cpu); >X fd = open (msr_file_name, O_WRONLY); >X if (fd < 0) >X { >X@@ -304,11 +327,21 @@ uint64_t set_msr_value (int cpu, uint32_t reg, uint64_t data) >X } >X } >X >X+#if __linux__ >X if (pwrite (fd, &data, sizeof data, reg) != sizeof data) >X { >X perror ("wrmsr:pwrite"); >X exit (127); >X } >X+#elif __FreeBSD__ >X+ cpuctl_msr_args_t args; >X+ args.msr = reg; >X+ args.data = data; >X+ if (ioctl (fd, CPUCTL_WRMSR, &args) < 0) { >X+ perror ("wrmsr:ioctl"); >X+ exit (127); >X+ } >X+#endif >X close(fd); >X return(1); >X } >X@@ -487,10 +520,10 @@ void Print_Information_Processor(bool* nehalem, bool* sandy_bridge) >X void Test_Or_Make_MSR_DEVICE_FILES() >X { >X //test if the msr file exists >X- if (access ("/dev/cpu/0/msr", F_OK) == 0) >X+ if (access (_DEV_CPU0_MSR, F_OK) == 0) >X { >X- printf ("i7z DEBUG: msr device files exist /dev/cpu/*/msr\n"); >X- if (access ("/dev/cpu/0/msr", W_OK) == 0) >X+ printf ("i7z DEBUG: msr device files exist %s\n", _DEV_CPU0_MSR); >X+ if (access (_DEV_CPU0_MSR, W_OK) == 0) >X { >X //a system mght have been set with msr allowable to be written >X //by a normal user so... >X@@ -505,6 +538,7 @@ void Test_Or_Make_MSR_DEVICE_FILES() >X printf ("i7z DEBUG: msr device files DONOT exist, trying out a makedev script\n"); >X if (geteuid () == 0) >X { >X+#ifdef __linux__ >X //Try the Makedev script >X //sourced from MAKEDEV-cpuid-msr script in msr-tools >X system ("msr_major=202; \ >X@@ -519,6 +553,9 @@ void Test_Or_Make_MSR_DEVICE_FILES() >X "); >X printf ("i7z DEBUG: modprobbing for msr\n"); >X system ("modprobe msr"); >X+#elif __FreeBSD__ >X+ system ("kldload cpuctl"); >X+#endif >X } else { >X printf ("i7z DEBUG: You DONOT have root privileges, mknod to create device entries won't work out\n"); >X printf ("i7z DEBUG: A solution is to run this program as root\n"); >X@@ -526,6 +563,7 @@ void Test_Or_Make_MSR_DEVICE_FILES() >X } >X } >X } >X+#ifdef __linux__ >X double cpufreq_info() >X { >X //CPUINFO is wrong for i7 but correct for the number of physical and logical cores present >X@@ -543,6 +581,21 @@ double cpufreq_info() >X fclose (tmp_file); >X return atof(tmp_str); >X } >X+#elif __FreeBSD__ >X+double cpufreq_info() >X+{ >X+ struct clockinfo clock; >X+ size_t len; >X+ >X+ len = sizeof(clock); >X+ if (sysctlbyname ("hw.clockrate", &clock, &len, NULL, 0) == -1) >X+ { >X+ perror ("cpufreq_info:sysctl"); >X+ exit (127); >X+ } >X+ return (clock.hz); >X+} >X+#endif >X >X int check_and_return_processor(char*strinfo) >X { >X@@ -669,6 +722,7 @@ void print_socket_information(struct cpu_socket_info* socket) >X printf("Socket-%d [num of cpus %d physical %d logical %d] %s\n",socket->socket_num,socket->max_cpu,socket->num_physical_cores,socket->num_logical_cores,socket_list); >X } >X >X+#ifdef __linux__ >X void construct_CPU_Heirarchy_info(struct cpu_heirarchy_info* chi) >X { >X FILE *fp = fopen("/proc/cpuinfo","r"); >X@@ -715,7 +769,51 @@ void construct_CPU_Heirarchy_info(struct cpu_heirarchy_info* chi) >X chi->max_online_cpu = it_processor_num+1; >X fclose(fp); >X } >X+#elif __FreeBSD__ >X+void construct_CPU_Heirarchy_info(struct cpu_heirarchy_info* chi) >X+{ >X+ int i; >X+ FILE *fp = fopen("/var/run/dmesg.boot", "r"); >X+ char strinfo[200]; >X+ char *tmp; >X >X+ int processor_num, physicalid_num = 0, coreid_num = 0; >X+ int ncpu = 0, packages, cores, threads; >X+ >X+ if (fp!=NULL) { >X+ while ( fgets(strinfo,200,fp) != NULL) { >X+ if (strstr(strinfo, "FreeBSD/SMP: ") != NULL) { >X+ if ((tmp = strstr(strinfo, "Multiprocessor System Detected: ")) != NULL) { >X+ tmp = strchr(tmp, ':'); >X+ tmp++; /* skip space */ >X+ ncpu = atoi(tmp); >X+ } else { >X+ tmp = strchr(strinfo, ' '); >X+ tmp++; /* skip space */ >X+ packages = atoi(tmp); >X+ tmp = strchr(tmp, 'x'); >X+ tmp++; /* skip space */ >X+ cores = atoi(tmp); >X+ threads = ncpu / (packages * cores); >X+ } >X+ } >X+ } >X+ for (i = 0; i < ncpu; i++) { >X+ processor_num = i; >X+ if ((coreid_num + 1) == cores) >X+ physicalid_num++; >X+ physicalid_num %= packages; >X+ coreid_num = processor_num % cores; >X+ >X+ chi->processor_num[i] = processor_num; >X+ chi->package_num[i] = physicalid_num; >X+ chi->coreid_num[i] = coreid_num; >X+ } >X+ } >X+ chi->max_online_cpu = ncpu; >X+ fclose(fp); >X+} >X+#endif >X void print_CPU_Heirarchy(struct cpu_heirarchy_info chi) >X { >X int i; >Xdiff --git a/i7z.c b/i7z.c >Xindex d692ba3..03c750a 100644 >X--- a/i7z.c >X+++ b/i7z.c >X@@ -386,7 +386,11 @@ void atexit_runsttysane() >X >X void modprobing_msr() >X { >X+#ifdef __linux__ >X system("modprobe msr"); >X+#elif __FreeBSD__ >X+ system("kldload cpuctl"); >X+#endif >X } >X >X //Info: I start from index 1 when i talk about cores on CPU >X-- >X1.7.11.5 >X >0ba15b6b48880dc18ca12f7b949e6097 >echo x - sysutils/i7z/distinfo >sed 's/^X//' >sysutils/i7z/distinfo << 'fe1a4d6263b156deec5ec676241eef08' >XSHA256 (i7z-0.27.2.tar.gz) = a7f72d65732c17eef0df4f284927fe744fc650075f2364c51c9497534d8f47f1 >XSIZE (i7z-0.27.2.tar.gz) = 51226 >fe1a4d6263b156deec5ec676241eef08 >exit
You cannot view the attachment while viewing its details because your browser does not support IFRAMEs.
View the attachment on a separate page
.
View Attachment As Raw
Actions:
View
Attachments on
bug 174366
: 130447