The UNIX and Linux Forums  

Go Back   De Unix-en Linux Forum > Top Forums > Hoog Niveau Programmering
.
google unix.com



Hoog Niveau Programmering Post vragen over C, C + +, Java, SQL, en andere programmeertalen hier.

Meer UNIX en Linux Forum Onderwerpen Misschien vindt u Helpful
Draad Thread Starter Forum Antwoorden Last Post
semafoor raguramtgr UNIX voor Dummies Questions & Answers 7 06-15-2009 10:39
Semafoor Jaken Programmeren en Shell Scripting 2 04-04-2009 06:10 PM
dmidecode, RAM-snelheid \u003d "Huidige Snelheid: Onbekend" Santi Bestandssystemen, schijven en geheugen 0 02-16-2006 06:16
Semafoor vjsony UNIX voor Dummies Questions & Answers 3 04-07-2003 03:06 PM
semafoor yls177 UNIX voor Dummies Questions & Answers 1 10-09-2002 12:18 AM

Closed Thread
English Japanese Spanish French German Portuguese Italian Dutch Swedish Russian Norwegian Hungarian Hebrew Danish Bulgarian Greek Powered by Powered by Google
 
LinkBack Thread Tools Zoeken in deze Thread Waardering: Thread Rating: 1 votes, 4.00 average. Display Modes
  #1 (permalink)  
Old 09-17-2008
migurus migurus is offline
Geregistreerde gebruiker
  
 

Join Date: Sep 2008
Locatie: US
Posts: 49
semafoor toegangssnelheid

Ik ben enkele vergrendeling regeling gebruik van semaforen. Te evalueren basisstelsel snelheid ik een lus om enkele semafoor info en weer te geven:

terwijl:; doen. / semshow; gedaan> res.txt

Ik heb dit op 3 dozen - twee soortgelijke moderne HP XEON dozen, een stromend SCO OpenServer 5, de andere is Fedora 2.6.9, en een oude PIII vak onder moderne Linux (geen info).
De resultaten zijn zeer intuïtief teller:
H / W | OS | Gem aantal loopt ber sec
---- | --- | -------------------------
XEON | SCO | 1700
XEON | Fedora | 500
PIII | Linux (recente distro, onbekend) | 900
Alle drie de systemen waren vrijwel stationair op de test tijd.

Ik zou willen vragen, wat zouden de factoren die oude Unix te presteren moderne besturingssystemen, ook, hoe komt het PIII vak presteren moderne XEON vak onder soortgelijke OS. Elke ponters zou worden gewaardeerd.

De semshow programma is zeer basic, zie hieronder:

Code:
 
#include <stdio.h>
#include <sys/types.h>
#include <sys/ipc.h>
#include <sys/sem.h>
#include  <sys/timeb.h>
#include <time.h>
#include "semlib.h"
#define MODE_CREATE     0
#define MODE_REMOVE     1
key_t   IPCKEY;
main(int argc, char *argv[])
{
  int   sid, i;
  pid_t last_rpid, last_wpid;
  char  dbuf[80];
  union semun           arg;
  unsigned short        vals[NSEMS];
  struct timeb tb;
  struct tm *tp;
        if((IPCKEY = get_ipc_key()) == -1)
        {
                errexit("Can Not Obtain IPC Key");
        }
        if((sid = semget(IPCKEY, NSEMS, 0)) == -1)
        {
                errexit("Can Not Get Semaphore ID");
        }
        memset(vals, 0, sizeof(vals));
        arg.array = &vals[0];
        if(semctl(sid, NSEMS, GETALL, arg) == -1)
        {
                errexit("Can Not Get Semaphore Values");
        }
        if((last_rpid = semctl(sid, RDLOCK, GETPID)) == -1)
        {
                errexit("Can Not Get Semaphore R-Pid");
        }
        if((last_wpid = semctl(sid, WRLOCK, GETPID)) == -1)
        {
                errexit("Can Not Get Semaphore W-Pid");
        }
        ftime(&tb);
        tp = localtime(&tb.time);
        strftime(dbuf, sizeof(dbuf) - 1, "%T", tp);
        printf("%12li.%03i %s  RD:[%i]  WR:[%i] %i/%i\n",
                tb.time, tb.millitm, dbuf, 
                vals[RDLOCK], vals[WRLOCK],
                last_rpid, last_wpid);
        exit(0);
}

semlib.h heeft deze defs:

Code:
 
#define NSEMS   2
#define RDLOCK  0
#define WRLOCK  1
union   semun   {
        int             val;
        struct semid_ds *buf;
        unsigned short  *array;
};

  #2 (permalink)  
Old 09-18-2008
otheus's Avatar
otheus otheus is offline Forum Staff  
Moderator ala Mode
  
 

Join Date: Feb 2007
Locatie: Innsbruck, Oostenrijk
Berichten: 1.893
Hier is een antwoord: uw tijd meting buggy. Zie man op ftime () onder Linux:

Citaat:
Deze functie is achterhaald. Gebruik het niet. Als de tijd in seconden volstaat, de tijd (2) kan
worden gebruikt; gettimeofday (2) geeft microseconden; clock_gettime (3) geeft nanoseconden maar
is nog niet op grote schaal beschikbaar.

Onder libc4 en libc5 de millitm veld is betekenisvol. Maar vroeg glibc2 is buggy en
retourneerd 0 er; glibc 2.1.1 correct weer.
  #3 (permalink)  
Old 09-18-2008
migurus migurus is offline
Geregistreerde gebruiker
  
 

Join Date: Sep 2008
Locatie: US
Posts: 49
Het Fedora vak heeft
/lib/tls/libc.so.6 -> libc-2.3.5.so
ja, ik neem de versie is 2.3.5.

Maar dat is naast het punt.

De zuivere aantal keer systeem liep het programma binnen een seconde zou geven totale systeem de macht, om zo te zeggen. Tot mijn verbazing PIII onder Linux te draaien bijna tweemaal zoveel cycli withi een seconde dan Xeon 3.2GHz onder Linux. Dan dezelfde Xeon h / w onder de oude SCO OSR lopen twee keer zo snel als PIII doos.
  #4 (permalink)  
Old 09-18-2008
otheus's Avatar
otheus otheus is offline Forum Staff  
Moderator ala Mode
  
 

Join Date: Feb 2007
Locatie: Innsbruck, Oostenrijk
Berichten: 1.893
Maar Probleem # 1 is dat je de meting dit de verkeerde manier. U hebt te veel afhankelijkheden van bibliotheek telefoontjes die niet relevant zijn voor wat je probeert te meten. Neem alle semaphore code, re-test en zie welke tijden je krijgt. Of, op een 10.000 x lus rond de semafoor. Dan schaal naar de dichtstbijzijnde tweede zodat microseconden mistimings niet in het spel.

Probleem # 2 is dat semaforen nodig bus-toegang en zijn relatief onafhankelijk van de processor snelheid.
  #5 (permalink)  
Old 09-18-2008
migurus migurus is offline
Geregistreerde gebruiker
  
 

Join Date: Sep 2008
Locatie: US
Posts: 49
Ik verving de ftime met gettimeofday en opnieuw uit te voeren, de resultaten zijn hetzelfde.

Om samen te vatten opnieuw
dezelfde h / w:
programma onder SCO loopt 3 keer sneller dan onder Linux,
hetzelfde OS:
programma draait 2 keer sneller op oude PIII dan op moderne Xeon

Eventuele redenen? Any ideas?
  #6 (permalink)  
Old 09-18-2008
otheus's Avatar
otheus otheus is offline Forum Staff  
Moderator ala Mode
  
 

Join Date: Feb 2007
Locatie: Innsbruck, Oostenrijk
Berichten: 1.893
Het spijt me, maar je nog steeds niet weggewerkt alle "losse variabelen". Maar je semafoor-code in een loop van 1000 of zo en bankje opnieuw.
  #7 (permalink)  
Old 09-18-2008
migurus migurus is offline
Geregistreerde gebruiker
  
 

Join Date: Sep 2008
Locatie: US
Posts: 49
Ik vereenvoudigde mijn programma naar de zeer minimum, het wordt ipc toets, krijgt semaphore id en leest de waarden van semaforen en vervolgens uitgangen op lijn (tijd en semafoor waarden). Dat is alles wat zij doet.

Daarna heb ik het draaien op de volgende manier:
$ Terwijl:; doen tstshow; gedaan> x.txt
en ik hit onderbreken sleutel wachten na enige tijd.

monster van het x.txt bestandsinhoud:
1221785538 [1,99]
1221785538 [1,99]
1221785538 [1,99]


Dan is te zien hoeveel keer systeem in staat was om het uit te voeren ik doen:
$ Cut-c-12 x.txt | uniq-c

monster van de output:
616 1221785538
615 1221785539
612 1221785540

Tels me dat het systeem in staat is om draait dit eenvoudige proces slechts ongeveer 600 keer per seconde.

Gewoon om consistent te zijn zou ik herhaal resultaten hier:
PIII onder Linux -- 900 keer / sec
Xeon 3.2 Linux -- 600 keer / sec
Xeon 3.2 SCO -- 1800 keer / sec
Systemen zijn nutteloos op het moment van de test.
Hoe zou u uitleg over de resultaten kreeg ik? Ik ben op zoek naar een knelpunt op de moderne h / w Linux.

Zie mijn nieuwe vereenvoudigde code hieronder:


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);
}

Closed Thread

Bladwijzers

Thread Tools Zoeken in deze Thread
Zoeken in deze Thread:

Uitgebreid zoeken
Display Modes Beoordeel deze draad
Beoordeel deze draad:

Posting Regels
Jij mag niet Post Nieuwe threads
Jij mag niet na antwoorden
Jij mag niet post attachments
Jij mag niet bewerk uw berichten

BB code is Aan
Smilies zijn Aan
[IMG] code Aan
HTML-code is Uit
Trackbacks zijn Aan
Pingbacks zijn Aan
Refbacks zijn Aan




Alle tijden zijn GMT -4. Het is nu 03:19.


Powered by: vBulletin, Copyright © 2000 - 2006, Jelsoft Enterprises Limited. Vertalingen Powered by .
vBCredits v1.4 Copyright © 2007 - 2008, PixelFX Studios
De Unix-en Linux Forums Copyright © 1993-2009. Alle rechten Reserved.Ad Beheer door RedTyger

Content Relevante URL's door vBSEO 3.2.0