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-18-2008
otheus's Avatar
otheus otheus is offline Forum Staff  
Moderator ala Mode
  
 

Join Date: Feb 2007
Locatie: Innsbruck, Oostenrijk
Berichten: 1.893
Aangezien u niet lijken op te volgen, ik verwacht niet dat u voor het benchmarken van de volgende code. In geval u dit echter, en de resultaten zijn nog steeds op grote schaal onverwachte, kunt u een notitie maken van het hier.


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[])
{
    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 (permalink)  
Old 09-19-2008
tijdperk era is offline Forum Advisor  
Herder van Nutteloze Cats (On Sabbatical)
  
 

Join Datum: maart 2008
Locatie: / er / is / alleen / bin / sh
Berichten: 3652
Just for nadruk, uw resultaten omvatten de overhead van het starten van een groot aantal processen, en in elk van hen, het afdrukken van een regel tekst op een gebufferde blok apparaat en het verlaten van het proces. Knelpunten in een van deze operaties zijn veel meer kans om de resultaten op dan het ding dat je probeert om te testen.
  #3 (permalink)  
Old 09-19-2008
migurus migurus is offline
Geregistreerde gebruiker
  
 

Join Date: Sep 2008
Locatie: US
Posts: 49
Ik opgesteld en lopen de lus test code geplaatst door Otheus.

Xeon / SCO resultaten: 555.555,56 semop / s [0,0]
Xeon / Linux resultaten: 128.205,13 semop / s [0,0]

Ik heb geen toegang tot PIII vak rechts nu, maar als de resultaten zijn hetzelfde (proportioneel) als wat ik zag in mijn test Ik vind het niet belangrijk niet te hebben PIII resultaten hier.

Zoveel overhead genoemd door Era - Ik ben mij bewust van, omdat het lijkt op situatie dat ik de evaluatie, zodat zij een geldige test en geen toezicht.

Dus, heeft iemand enig idee wat het knelpunt zou kunnen zijn? of waar te zoeken? Ik waardeer uw geduld met mij en uw volharding in om naar de onderkant van het.
  #4 (permalink)  
Old 09-19-2008
jim McNamara jim mcnamara is offline Forum Staff  
...@...
  
 

Join Date: Feb 2004
Locatie: NM
Berichten: 5.807
Toegang tot een semafoor - ervan uitgaande dat er geen impasse - het is een directe geheugentoegang operatie, het toevoegen van een hele pagina of een veelvoud te verwerken geheugen overhead. Het kan gepaard gaan met een dure call: brk (), indien er geen geheugen is al aanwezig.

Het hangt af van wat

Code:
size mycode

zegt in totaal, worden afgerond op een minimum van het PAGE_SIZE (mutiple) grens (stack frame grens meestal), die extra verlof kan meerdere pagina's geheugen. Kijk naar wat er blijkt te worden toegewezen aan de heap. Als een begin. U kunt bellen sbrk (0) om te zoeken naar het einde van het proces geheugen.

shmget alloceert uit afvalberg in de meeste implementaties: / proc / sys / kernel / sh * proc mappen hebben gedeeld geheugen informatie. kernel instellingen controle gedeeld geheugen operaties.

probeer dit:

Code:
gcc -p -g -o otherus otheus.c
otheus.c
grpof otheus

Die wordt weergegeven cum tijd + # pleit voor elk van de functie aanroepen. U kunt zien als / wanneer er een probleem is. Als er een met semaforen semget dan zal je hoogst waarschijnlijk probleem - de toewijzing van pagina's van het geheugen.
  #5 (permalink)  
Old 09-19-2008
jim McNamara jim mcnamara is offline Forum Staff  
...@...
  
 

Join Date: Feb 2004
Locatie: NM
Berichten: 5.807
PS oproep utimes (struct TMS *) tot werkelijke tijden, plus granulariteit is CLK_TCK, meestal veel beter dan time ().

gettimeofday kan worden gebruikt om muur tijd nog nauwkeuriger worden. utimes () retourneert clock_t muur tijd.
  #6 (permalink)  
Old 09-20-2008
otheus's Avatar
otheus otheus is offline Forum Staff  
Moderator ala Mode
  
 

Join Date: Feb 2007
Locatie: Innsbruck, Oostenrijk
Berichten: 1.893
Citaat:
Oorspronkelijk geplaatst door jim McNamara View Post
PS oproep utimes (struct TMS *) tot werkelijke tijden, plus granulariteit is CLK_TCK, meestal veel beter dan time ().

gettimeofday kan worden gebruikt om muur tijd nog nauwkeuriger worden. utimes () retourneert clock_t muur tijd.
Jim, utimes () niet doet wat je denkt dat het doet. Gettimeofday meer kloppen, maar de code is een beetje ingewikkelder. Microseconde verschillen niet de verschillen in prestaties is hij te zien.
  #7 (permalink)  
Old 09-19-2008
migurus migurus is offline
Geregistreerde gebruiker
  
 

Join Date: Sep 2008
Locatie: US
Posts: 49
Jim,
Ik heb nooit geprobeerd profilering voor, dus ik liep in sommige probleem hier:
$ Gcc-pg-o tstloop tstloop.c
$ Tstloop
128.205,13 semop / s [0,0]
$ Gprof tstloop
gprof: gmon.out bestand ontbreekt call-grafiek gegevens

Any ideas?

Wat het gebruik van de tijd versus gettimeofday (die in feite heb ik gebruik) is volkomen irrelevant, ik probeer om te zien hoe veel keer per seconde systeem is geschikt voor het maken van een proces dat zou alleen maar lezen van een semafoor.

Bedankt.
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 01:50 PM.


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