sreadahead: Add a patch to set the app to io-idle running status.
This patch sets the sreadahead to io-idle stauts when it is running, so that sreadahead will not preempt IO with other apps.
This commit is contained in:
parent
0c2a3df77b
commit
6f7afab062
|
@ -0,0 +1,39 @@
|
|||
diff -Naurp sreadahead-0.02/readahead.c sreadahead-0.02-nice/readahead.c
|
||||
--- sreadahead-0.02/readahead.c 2008-11-06 00:57:17.000000000 -0500
|
||||
+++ sreadahead-0.02-nice/readahead.c 2008-11-06 02:28:29.000000000 -0500
|
||||
@@ -26,7 +26,18 @@
|
||||
#include <errno.h>
|
||||
|
||||
#include "readahead.h"
|
||||
+#include <sys/syscall.h>
|
||||
|
||||
+# if defined(__i386__)
|
||||
+# define __NR_ioprio_set 289
|
||||
+# elif defined(__x86_64__)
|
||||
+# define __NR_ioprio_set 251
|
||||
+# else
|
||||
+# error "Unsupported arch"
|
||||
+# endif
|
||||
+
|
||||
+#define IOPRIO_WHO_PROCESS 1
|
||||
+#define IOPRIO_CLASS_SHIFT 13
|
||||
#define MAXR 1024
|
||||
static struct readahead files[MAXR];
|
||||
static unsigned int total_files = 0;
|
||||
@@ -68,7 +79,15 @@ void *one_thread(void *ptr)
|
||||
|
||||
int main(int argc, char **argv)
|
||||
{
|
||||
- FILE *file = fopen("/etc/readahead.packed", "r");
|
||||
+ int iopriority = 7; /* hard code for idle */
|
||||
+ int iopriority_class = 3; /* 3 stands for idle */
|
||||
+ int pid = 0;
|
||||
+ FILE *file;
|
||||
+
|
||||
+ if (syscall(__NR_ioprio_set, IOPRIO_WHO_PROCESS, pid, iopriority | iopriority_class << IOPRIO_CLASS_SHIFT) == -1)
|
||||
+ perror("Can not set priority to idle class");
|
||||
+
|
||||
+ file = fopen("/etc/readahead.packed", "r");
|
||||
if (!file) {
|
||||
perror("Couldnt open /etc/readahead.packed");
|
||||
return -errno;
|
|
@ -9,6 +9,7 @@ inherit update-rc.d
|
|||
SRC_URI = "http://www.moblin.org/sites/all/files/sreadahead-${PV}.tar.gz \
|
||||
file://sreadahead-0.02-make.patch;patch=1 \
|
||||
file://readahead_c.patch;patch=1 \
|
||||
file://set_to_idle.patch;patch=1 \
|
||||
file://sreadahead-generate.sh \
|
||||
file://sreadahead.sh"
|
||||
|
||||
|
|
Loading…
Reference in New Issue