The UNIX and Linux Forums  

Go Back   The UNIX and Linux Forums > Top Forums > High Level Programming
.
google unix.com




View Single Post in the UNIX and Linux Forums - Click on the Thread or Permalink to View Entire Thread -->
  #7 (permalink)  
Old 09-18-2008
migurus migurus is offline
Registered User
  
 

Join Date: Sep 2008
Location: US
Posts: 49
I simplified my program to the very basic minimum, it gets ipc key, gets semaphore id and reads values of semaphores and then it outputs on line (time and semaphore values). That is all it does.

Then I run it in following manner:
$ while : ; do tstshow; done > x.txt
and I hit interrupt key after waiting for some time.

sample of the x.txt file content:
1221785538 [1,99]
1221785538 [1,99]
1221785538 [1,99]


Then to see how many times system was able to run it I do:
$ cut -c-12 x.txt | uniq -c

sample of the output:
616 1221785538
615 1221785539
612 1221785540

That tels me the system is capable of running this simple process just roughly 600 times per second.

Just to be consistent I would repeat results here:
PIII under Linux - 900 times/sec
Xeon 3.2 Linux - 600 times/sec
Xeon 3.2 SCO - 1800 times/sec
Systems are idle at the time of test.
How would you explain the results I got? I am trying to find a bottleneck on the modern h/w running Linux.

Please see my new simplified code below:


Code:
 
#include <stdio.h>
#include <sys/types.h>
#include <sys/ipc.h>
#include <sys/sem.h>
#include <time.h>
#define NSEMS   2
main(int argc, char *argv[])
{
  int           sid;
  ushort        vals[NSEMS] = {0, 0};
        if((sid = semget(get_ipc_key(), NSEMS, 0)) == -1)
        {
                errexit("Can Not Get Semaphore ID");
        }
        if(semctl(sid, NSEMS, GETALL, vals) == -1)
        {
                errexit("Can Not Get Semaphore Values");
        }
        printf("%12li [%i,%i]\n", time(NULL), vals[0], vals[1]);
        exit(0);
}