mirror of https://lore.kernel.org/lkml/
 help / color / mirror / Atom feed
From: Michael Rothwell <rothwell@holly-springs.nc.us>
To: Mark Hahn <hahn@coffee.psychology.mcmaster.ca>
Cc: Nigel Gamble <nigel@nrg.org>, linux-kernel@vger.kernel.org
Subject: Re: #define HZ 1024 -- negative effects
Date: Wed, 25 Apr 2001 20:39:57 -0400	[thread overview]
Message-ID: <3AE76E5D.7050506@holly-springs.nc.us> (raw)
In-Reply-To: <Pine.LNX.4.10.10104251850400.3127-300000@coffee.psychology.mcmaster.ca>

Well, for kicks, I tried setting HZ to 1024 with 2.2.19. It seemed a 
little more responsive, but that could be psychosomatic. :) I did notice 
that I was unable to sync my palm pilot until I set it back to 100. 
YMMV. The most useful "performace" tweak for a GUI that I've come across is:

#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
> 
> 



  reply	other threads:[~2001-04-26  0:40 UTC|newest]

Thread overview: 6+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2001-04-24 23:20 #define HZ 1024 -- negative effects? Michael Rothwell
2001-04-25 22:40 ` Nigel Gamble
2001-04-25 22:56   ` #define HZ 1024 -- negative effects Mark Hahn
2001-04-26  0:39     ` Michael Rothwell [this message]
2001-04-29 21:44 ` #define HZ 1024 -- negative effects? Jim Gettys
2001-04-29 21:59   ` Michael Rothwell

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=3AE76E5D.7050506@holly-springs.nc.us \
    --to=rothwell@holly-springs.nc.us \
    --cc=hahn@coffee.psychology.mcmaster.ca \
    --cc=linux-kernel@vger.kernel.org \
    --cc=nigel@nrg.org \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox

all inboxes | Powered by JetHome®