On (05/29/13 11:44), Youquan Song wrote:
Powertop 2.3 fails to run on machine with > 69 CPUs because system
open files
limitation of one process is 1024 default, While powertop will open one file
for every monitored perf_event (at least 15) each CPU.
how about, say, 2048? unlimited resource steals possibility to detect
error/bug/leak/etc.
and let's make rlimit change after checkroot() call.
-ss
Like on 80 CPUs Westmere-EX machine, powertop will fail to run with
below:
PowerTOP v2.3 needs the kernel to support the 'perf' subsystem
as well as support for trace points in the kernel:
CONFIG_PERF_EVENTS=y
CONFIG_PERF_COUNTERS=y
CONFIG_TRACEPOINTS=y
CONFIG_TRACING=y
This patch is to change RLIMIT_NOFILE from default (1024) to max limition.
Signed-off-by: Youquan Song <youquan.song(a)intel.com>
---
src/main.cpp | 6 ++++++
1 files changed, 6 insertions(+), 0 deletions(-)
diff --git a/src/main.cpp b/src/main.cpp
index 0883424..8cd97a2 100644
--- a/src/main.cpp
+++ b/src/main.cpp
@@ -36,6 +36,7 @@
#include <getopt.h>
#include <unistd.h>
#include <locale.h>
+#include <sys/resource.h>
#include "cpu/cpu.h"
#include "process/process.h"
@@ -283,9 +284,14 @@ static void powertop_init(void)
static char initialized = 0;
int ret;
struct statfs st_fs;
+ struct rlimit rlmt;
if (initialized)
return;
+
+ getrlimit (RLIMIT_NOFILE, &rlmt);
+ rlmt.rlim_cur = rlmt.rlim_max;
+ setrlimit (RLIMIT_NOFILE, &rlmt);
checkroot();
ret = system("/sbin/modprobe cpufreq_stats > /dev/null 2>&1");