![]() |
|
|
google unix.com
|
|||||||
| Forums | Registrer | Forum Rules | Lenker | Album | FAQ | Medlemsliste | Kalender | Søke | Dagens innlegg | Marker forumene som lest |
| High Level Programmering Post spørsmål om C, C + +, Java, SQL og andre programmeringsspråk her. |
Mer UNIX og Linux Forum Emner Du kan finne nyttig
|
||||
| Tråd | Tråd startet | Forum | Svar | Siste innlegg |
| semaforen | raguramtgr | UNIX for Dummies Spørsmål og svar | 7 | 06-15-2009 10:39 |
| Semaforen | Jaken | Shell programmering og Skripting | 2 | 04-04-2009 06:10 |
| dmidecode, RAM hastighet \u003d "Nåværende Speed: Ukjent" | Santi | Filsystemer, disker og Minne | 0 | 02-16-2006 06:16 |
| Semaforen | vjsony | UNIX for Dummies Spørsmål og svar | 3 | 04-07-2003 03:06 |
| semaforen | yls177 | UNIX for Dummies Spørsmål og svar | 1 | 10-09-2002 12:18 |
![]() |
|
|
LinkBack | Thread Tools | Søk i denne tråden |
Vurdering:
|
Visningsmoduser |
|
|
|
||||
|
Min versjon av truss har ikke-c flagg eller andre flagg ligner på en jeg brukte med spor under Linux.
På Linux: $ / Sbin / sysctl-a | grep shm ... <snip feil msgs> vm.hugetlb_shm_group \u003d 0 kernel.shmmni \u003d 4096 kernel.shmall \u003d 2097152 kernel.shmmax \u003d 33554432 Q: Hvorfor vil SHM parametere påvirker semaforen ytelse? Og bare i tilfelle jeg kjørte dette $ / Sbin / sysctl-a | grep sem <snip feil msgs> kernel.sem \u003d 250 32000 32 128 Sist endret av migurus; 09-24-2008 på 08:55.. Årsak: lagt til info |
|
||||
|
Takk Otheus og Jim, jeg har ganske detaljert svar her:
semaforen tilgang hastighet | KernelTrap Så, den 2.6.9 kernel er ikke den beste for moderne h / w. Jeg setter pris everebodys gang! |
|
|||||
|
Kudos til deg for fasthet! Men jeg tror ikke dette er slutten av den.
Jeg gjorde et lite forskning på strcmp svar. 2.6.9 ble utgitt i 2004 og er standard med RHEL 4, som leveres med glibc 2.3.4. Pentium 3's var gammel i 2004. RHEL 5 skip med kernel 2.6.18 og glibc 2.5.12. Så jeg gjorde noen tester. Jeg fulgte strcmp's forslag og brukt en "fallende tidtaker"-metoden, der loop starter og ender etter tid () kaller notater en endring i sekunder. Det er en 10 til 100 ms variansen på begge sider av høsten, så jeg tok et gjennomsnitt av flere kjører. Da jeg dele OPS / s nummer av CPU-hastighet (sykluser / s) for å få "tics per op".
For tics / op mindre er bedre. Så 2.6.18 kjernen er faktisk raskere enn 2.6.9 kjerner. Den Xeon er mye saktere. Antagelig den kjerner ble utarbeidet av en lavest fellesnevneren. Ingen optimaliseringsprogrammet flaggene ble aktivert, men det var en forskjell i kompilatorene: the 2.6.9 vert brukt gcc 3.4.6, mens de nyere som var med gcc 4.1.1. Dessuten bør det nevnes at vi ikke har en AMD kjører 2.6.9 eller Xeon kjører 2.6.18. Det svært godt kan være at problemet er at disse kjerner ikke var sammensatt optimalt for de ulike arkitekturer. Hvorfor Xeons er så mye lavere er ganske overraskende, gitt sitt karakteristiske bruk som HPC komponenter. Uansett, ingen av disse resultatene synes å forklare grunnleggende spørsmål: Hvorfor er SCO mye raskere? Sist endret av otheus; 10-08-2008 på 06:57.. Grunn: Jeg sa at Xeon er mye raskere når det var mye saktere. |
|
|||||
|
Her er min kode: Code:
#include <stdio.h>
#include <sys/types.h>
#include <sys/ipc.h>
#include <sys/sem.h>
#include <time.h>
#define NSEMS 2
/* change this per CPU to run between 8 and 12 s*/
const static int maxloop = 10000000;
main(int argc, char *argv[])
{
time_t start,last,stop;
long int i;
int estimate = 100;
int sid;
key_t key;
ushort vals[NSEMS] = { 0, 0 };
key = ftok("/tmp",99);
last=start=time(NULL);
for (i = 0; i < 1000; ++i) {
usleep(10);
last=time(NULL);
if (last > start) break;
}
start=last;
last = 0;
for (i = maxloop/8; i < maxloop; 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");
}
}
/* do the last 1/8th until the second changes.
If your processor reaches the maxloop before that,
change the maxloop or the divisor or the "estimate" */
stop=time(NULL);
for (i = maxloop - maxloop/8; i < maxloop; ++i) {
if ( !(i % estimate) ) {
last=time(NULL);
if (last > stop) break;
stop=last;
}
/* repeat semaphore opts */
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=last;
printf("%.2f semop/s (%i/%i) [%d]\n", (double)i/(stop-start), i, stop-start, estimate);
}
|
![]() |
| Hugseliste |
| Thread Tools | Søk i denne tråden |
| Visningsmoduser | Ranger denne tråden |
|
|