The UNIX and Linux Forums  

Go Back   UNIX och Linux Forum > Upp Forum > High Level Programming
.
google unix.com



High Level Programming Post frågor om C, C + +, Java, SQL och andra programmeringsspråk här.

Mer UNIX och Linux Forum Ämnen Du kan hitta Helpful
Tråd Thread Starter Forum Svar Senaste Inlägg
semaforen raguramtgr UNIX for Dummies Frågor & Svar 7 06-15-2009 10:39
Semaforen Jaken Shell-programmering och Skript 2 04-04-2009 06:10
dmidecode, RAM-hastighet \u003d "Current Speed: Okänt" Santi Filsystem, diskar och Minne 0 02-16-2006 06:16
Semaforen vjsony UNIX for Dummies Frågor & Svar 3 04-07-2003 03:06
semaforen yls177 UNIX for Dummies Frågor & Svar 1 10-09-2002 12:18

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 Sök i denna tråd Omdöme: Thread Rating: 1 votes, 4.00 average. Visningslägen
  #1 (permalänk)  
Old 09-18-2008
otheus's Avatar
otheus otheus is offline Forum Staff  
Moderator ala Mode
  
 

Join Date: februari 2007
Location: Innsbruck, Österrike
Inlägg: 1886
Eftersom du inte verkar följa instruktionerna jag inte förvänta dig att riktmärka följande kod. I fall du gör, och resultaten är fortfarande allmänt oväntade kan du göra en del av det här.

Kod:
#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[])
{
    time_t start,stop;
    long int i;
    int sid;
    key_t key;
    ushort vals[NSEMS] = { 0, 0 };

    key = ftok("/tmp",99);
    start=time(NULL);
    for (i = 0; i < 5000000; i++) {
      if ((sid = semget(key, NSEMS, IPC_CREAT | 0777)) == -1) {
          perror("Can Not Get Semaphore ID");
      }
      if (semctl(sid, NSEMS, GETALL, vals) == -1) {
          perror("Can Not Get Semaphore Values");
      }
    }
    stop=time(NULL);
    printf("%.2f semop/s [%i,%i]\n", (double)i/(stop-start), vals[0], vals[1]);
}
  #2 (permalänk)  
Old 09-19-2008
eran era is offline Forum Advisor  
Herder av Useless Cats (På sabbatsår)
  
 

Join Date: mars 2008
Ort: / det är / / bara / bin / sh
Inlägg: 3652
Bara för vikt, dina resultat inkluderar overhead att starta ett stort antal processer, och i vart och ett av dem, skriva ut en textrad till en buffrad spärra enheten och spännande processen. Flaskhalsar i någon av dessa operationer är mycket mer sannolikt att förklara de resultat än det du försöker att testa.
  #3 (permalänk)  
Old 09-19-2008
migurus migurus is offline
Registered User
  
 

Join Date: Sep 2008
Ort: USA
Inlägg: 49
Jag sammanställas och kör loop provningsmetod postat av Otheus.

Xeon / SCO resultat: 555555.56 semop / s [0,0]
Xeon / Linux resultat: 128205.13 semop / s [0,0]

Jag har inte tillgång till PIII rutan just nu, men resultaten är desamma (proportionellt) som vad jag såg i mitt prov jag tror att det inte är viktigt att inte ha PIII resultat.

Vad gäller allmänna nämnts av era - Jag är medveten om det, eftersom det liknar situationen att jag bedöma, så det ett giltigt test och inte ett förbiseende.

Så gör någon har någon aning om vad flaskhalsen kan vara? eller var du ska leta? Jag tackar för ditt tålamod med mig och din uthållighet när det gäller att få till botten med det.
  #4 (permalänk)  
Old 09-19-2008
jim McNamara jim mcnamara is offline Forum Staff  
...@...
  
 

Join Date: februari 2004
Ort: NM
Inlägg: 5.763
Använda en semaforen - förutsatt att det inte finns någon återvändsgränd - det är en direkt minnesåtkomst operationen, att lägga till en hel sida eller multipler att behandla minne har omkostnader. Det kan innebära en dyr ring: brk (), om inte minnet är redan där.

Det beror på vad
Kod:
size mycode
säger totalt, avrundat upp till ett minimum av PAGE_SIZE (mutiple) gränsskikt (stack frame gränsen oftast) som kan lämna ytterligare flera sidor i minnet. Titta på vad som visar sig vara tilldelas slagghögen. Som en start. Du kan ringa sbrk (0) för att hitta den sista processen minne.

shmget anslår från upplag i de flesta implementationer: / proc / sys / kernel / sh * proc abonnentförteckningar har delat minne information. kärnan inställningar kontrollera delat minne verksamhet.

prova detta:
Kod:
gcc -p -g -o otherus otheus.c
otheus.c
grpof otheus
Det kommer att visa cum tid + # samtal för varje funktion samtal. Du kan se om / när det finns ett problem. Om det finns en med semaforer sedan semget kommer vara din största sannolikhet problem - fördelning sidor minne.
  #5 (permalänk)  
Old 09-19-2008
jim McNamara jim mcnamara is offline Forum Staff  
...@...
  
 

Join Date: februari 2004
Ort: NM
Inlägg: 5.763
PS samtal utimes (strukt tms *) till faktiska gånger plus storleksmässig är CLK_TCK, oftast mycket bättre än Temne ().

gettimeofday kan användas för att få muren Temne ännu mer exakt också. utimes () Returnerar clock_t väggen temne.
  #6 (permalänk)  
Old 09-20-2008
otheus's Avatar
otheus otheus is offline Forum Staff  
Moderator ala Mode
  
 

Join Date: februari 2007
Location: Innsbruck, Österrike
Inlägg: 1886
Citat:
Ursprungligen postat av jim McNamara View Post
PS samtal utimes (strukt tms *) till faktiska gånger plus storleksmässig är CLK_TCK, oftast mycket bättre än Temne ().

gettimeofday kan användas för att få muren Temne ännu mer exakt också. utimes () Returnerar clock_t väggen temne.
Jim, utimes () inte gör vad du tycker det gör det. Gettimeofday är mer korrekt, men då koden är lite mer komplicerat. Mikrosekund skillnaderna inte skulle producera skillnaderna i prestanda är han ser.
  #7 (permalänk)  
Old 09-19-2008
migurus migurus is offline
Registered User
  
 

Join Date: Sep 2008
Ort: USA
Inlägg: 49
Jim,
Jag har aldrig försökt profilera innan, så jag sprang på några problem här:
$ Gcc-pg-o tstloop tstloop.c
$ Tstloop
128,205.13 semop / s [0,0]
$ Gprof tstloop
gprof: gmon.out fil saknas call-diagram uppgifter

Några idéer?

Vad gäller användningen av Temne vs gettimeofday (som faktiskt jag gjorde användning) är helt irrelevant, jag försöker att se hur många gånger per sekund är möjligt att skapa en process som bara skulle läsa en semaforen.

Tack.
Closed Thread

Komihåglista

Thread Tools Sök i denna tråd
Sök i denna tråd:

Avancerad sökning
Visningslägen Betygsätt denna tråd
Betygsätt denna tråd:

Utstationering Regler
Du får inte efter nya trådar
Du får inte efter svar
Du får inte skicka bilagor
Du får inte redigera dina inlägg

BB-kod är
Smilies är
[IMG] kod
HTML-koden är Av
Trackback är
Pingbacks är
Refbacks är




Alla tider är GMT -4. Klockan är nu 10:11.


Powered by: vBulletin, Copyright © 2000 - 2006, Jelsoft Enterprises Limited. Översättningar Powered by .
vBCredits v1.4 Copyright © 2007 - 2008, PixelFX Studios
UNIX och Linux Forum Innehållet upphovsrättsskyddat © 1993-2009. All Rights Reserved.Ad förvaltning RedTyger

Content Relevant webbadresser från vBSEO 3.2.0