Blame SOURCES/powertop-2.3-unlimit-fds.patch
|
|
4d24b8 |
diff --git a/src/main.cpp b/src/main.cpp
|
|
|
4d24b8 |
index 0883424..16b1613 100644
|
|
|
4d24b8 |
--- a/src/main.cpp
|
|
|
4d24b8 |
+++ b/src/main.cpp
|
|
|
4d24b8 |
@@ -28,6 +28,7 @@
|
|
|
4d24b8 |
* Arjan van de Ven <arjan@linux.intel.com>
|
|
|
4d24b8 |
*/
|
|
|
4d24b8 |
#include <iostream>
|
|
|
4d24b8 |
+#include <fstream>
|
|
|
4d24b8 |
#include <stdlib.h>
|
|
|
4d24b8 |
#include <stdio.h>
|
|
|
4d24b8 |
#include <time.h>
|
|
|
4d24b8 |
@@ -36,6 +37,7 @@
|
|
|
4d24b8 |
#include <getopt.h>
|
|
|
4d24b8 |
#include <unistd.h>
|
|
|
4d24b8 |
#include <locale.h>
|
|
|
4d24b8 |
+#include <sys/resource.h>
|
|
|
4d24b8 |
|
|
|
4d24b8 |
#include "cpu/cpu.h"
|
|
|
4d24b8 |
#include "process/process.h"
|
|
|
4d24b8 |
@@ -60,6 +62,8 @@
|
|
|
4d24b8 |
|
|
|
4d24b8 |
#define DEBUGFS_MAGIC 0x64626720
|
|
|
4d24b8 |
|
|
|
4d24b8 |
+#define NR_OPEN_DEF 1024 * 1024
|
|
|
4d24b8 |
+
|
|
|
4d24b8 |
int debug_learning = 0;
|
|
|
4d24b8 |
unsigned time_out = 20;
|
|
|
4d24b8 |
int leave_powertop = 0;
|
|
|
4d24b8 |
@@ -278,16 +282,35 @@ static void checkroot() {
|
|
|
4d24b8 |
|
|
|
4d24b8 |
}
|
|
|
4d24b8 |
|
|
|
4d24b8 |
+static int get_nr_open(void) {
|
|
|
4d24b8 |
+ int nr_open = NR_OPEN_DEF;
|
|
|
4d24b8 |
+ ifstream file;
|
|
|
4d24b8 |
+
|
|
|
4d24b8 |
+ file.open("/proc/sys/fs/nr_open", ios::in);
|
|
|
4d24b8 |
+ if (file) {
|
|
|
4d24b8 |
+ file >> nr_open;
|
|
|
4d24b8 |
+ if (!file)
|
|
|
4d24b8 |
+ nr_open = NR_OPEN_DEF;
|
|
|
4d24b8 |
+ file.close();
|
|
|
4d24b8 |
+ }
|
|
|
4d24b8 |
+ return nr_open;
|
|
|
4d24b8 |
+}
|
|
|
4d24b8 |
+
|
|
|
4d24b8 |
static void powertop_init(void)
|
|
|
4d24b8 |
{
|
|
|
4d24b8 |
static char initialized = 0;
|
|
|
4d24b8 |
int ret;
|
|
|
4d24b8 |
struct statfs st_fs;
|
|
|
4d24b8 |
+ struct rlimit rlmt;
|
|
|
4d24b8 |
|
|
|
4d24b8 |
if (initialized)
|
|
|
4d24b8 |
return;
|
|
|
4d24b8 |
|
|
|
4d24b8 |
checkroot();
|
|
|
4d24b8 |
+
|
|
|
4d24b8 |
+ rlmt.rlim_cur = rlmt.rlim_max = get_nr_open();
|
|
|
4d24b8 |
+ setrlimit (RLIMIT_NOFILE, &rlmt;;
|
|
|
4d24b8 |
+
|
|
|
4d24b8 |
ret = system("/sbin/modprobe cpufreq_stats > /dev/null 2>&1");
|
|
|
4d24b8 |
ret = system("/sbin/modprobe msr > /dev/null 2>&1");
|
|
|
4d24b8 |
statfs("/sys/kernel/debug", &st_fs);
|