#define _SHM_ID_BITS    10
... if y ou're running Gnome and/or Gtk, because of its appetite for 
lots of SHM segments.
-Michael
Mark Hahn wrote:
>>> Are there any negative effects of editing include/asm/param.h to change 
>>> HZ from 100 to 1024? Or any other number? This has been suggested as a 
>>> way to improve the responsiveness of the GUI on a Linux system. Does it 
>> 
> ...
> 
>> Why not just run the X server at a realtime priority?  Then it will get
>> to respond to existing events, such as keyboard and mouse input,
>> promptly without creating lots of superfluous extra clock interrupts.
>> I think you will find this is a better solution.
> 
> 
> it's surprisingly ineffective; usually, if someone thinks responsiveness
> is bad, there's a problem with the system.  for instance, if the system
> is swapping, setting X (and wm, and clients) to RT makes little difference,
> since the kernel is stealing pages from them, regardless of their scheduling
> priority.
> 
> if you're curious, you might be interested in two toy programs
> I've attached.  one is "setrealtime", which will make a pid RT, or else act
> as a wrapper (ala /bin/time).  I have it installed suid root on my system,
> though this is rather dangerous if your have lusers around.  the second is a
> simple memory-hog: mmaps a bunch of ram, and keeps it active (printing out a
> handy measure of how long it took to touch its pages...)
> 
> regards, mark hahn.
> 
> 
> ------------------------------------------------------------------------
> 
> #include <unistd.h>
> #include <stdlib.h>
> #include <stdio.h>
> #include <sys/time.h>
> #include <sys/mman.h>
> 
> volatile unsigned sink;
> 
> double second() {
>     struct timeval tv;
>     gettimeofday(&tv,0);
>     return tv.tv_sec + 1e-6 * tv.tv_usec;
> }
> 
> int
> main(int argc, char *argv[]) {
>     int doWrite = 1;
>     unsigned size = 80 * 1024 * 1024;
> 
>     int letter;
>     while ((letter = getopt(argc, argv, "s:wrvh?" )) != -1) {
> 	switch(letter) {
> 	case 's': size = atoi(optarg) * 1024 * 1024; break;
> 	case 'w': doWrite = 1; break;
> 	default:
> 	    fprintf(stderr,"useup [-s mb][-w]\n");
> 	    exit(1);
> 	}
>     }
>     int *base = (int*) mmap(0, size, 
> 			      PROT_READ|PROT_WRITE, 
> 			      MAP_ANONYMOUS|MAP_PRIVATE, 0, 0);
>     if (base == MAP_FAILED) {
> 	perror("mmap failed");
> 	exit(1);
>     }
> 
>     int *end = base + size/4;
> 
>     while (1) {
> 	double start = second();
> 	if (doWrite)
> 	    for (int *p = base; p < end; p += 1024)
> 		*p = 0;
> 	else {
> 	    unsigned sum = 0;
> 	    for (int *p = base; p < end; p += 1024)
> 		sum += *p;
> 	    sink = sum;
> 	}
> 	printf("%f\n",1000*(second() - start));
>     }
> }
> 
> 
> ------------------------------------------------------------------------
> 
> #include <unistd.h>
> #include <stdlib.h>
> #include <stdio.h>
> #include <sched.h>
> 
> int
> main(int argc, char *argv[]) {
>     int uid = getuid();
>     int pid = atoi(argv[1]);
>     int sched_fifo_min, sched_fifo_max;
>     static struct sched_param sched_parms;
> 
>     if (!pid)
> 	pid = getpid();
> 
>     sched_fifo_min = sched_get_priority_min(SCHED_FIFO);
>     sched_fifo_max = sched_get_priority_max(SCHED_FIFO);
>     sched_parms.sched_priority = sched_fifo_min + 1;
> 
>     if (sched_setscheduler(pid, SCHED_FIFO, &sched_parms) == -1)
>         perror("cannot set realtime scheduling policy");
> 
>     if (uid)
> 	setuid(uid);
> 
>     if (pid == getpid())
> 	execvp(argv[1],&argv[1]);
>     return 0;
> }
> useup.c
> 
> Content-Description:
> 
> useup.c
> Content-Type:
> 
> TEXT/PLAIN
> Content-Encoding:
> 
> BASE64
> 
> 
> ------------------------------------------------------------------------
> setrealtime.c
> 
> Content-Description:
> 
> setrealtime.c
> Content-Type:
> 
> TEXT/PLAIN
> Content-Encoding:
> 
> BASE64
> 
> 
-
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to majordomo@vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html
Please read the FAQ at  http://www.tux.org/lkml/