PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : System-Calls zu teuer. Wie umgeht man sie?


SimonX
2007-12-10, 03:40:24
Hi,

Unter Solaris und HP-UX sind System-Calls, wie ich messen konnte, extrem teuer.

Z.B. auf Solaris:

100000 time() calls + 800000 sigprocmask() calls kosten fast 1,5 Sekunden, wobei die eigentliche Software selbst nur 2,3 Sekunden benötigt. (truss -c ...)

Ich spreche hier von einer Datenbank-Library, die ihre Critical-Sektion durch Signalblocking mehr oder weniger schützt.

Auf Linux sieht das nicht so extrem aus, ist aber auch dort zu messen.

Ich habe mir nun überlegt einfach meinen eigenen Signalhandler-Wrapper zu schreiben, der alle Signale über Flags gesteuert an die echten Signal-Handler weiter gibt bzw. zwischenspeichert bis die Flags wieder freigeschaltet werden.

Gibt es einen Möglichkeit sich generell zwischen die Signal-Handler-Function zu hängen ohne das immer zu wiederholen, da ich ja nicht weiss was die eigentliche Application mit ihren Signalen macht?

Gast
2007-12-10, 09:41:20
Das würde ich eher im Programmierforum posten.

SimonX
2007-12-10, 13:15:23
Das ist aber zu Unix-spezifisch.

gentoo
2007-12-10, 14:09:08
Du wirst ohne Systemcalls unter Unix/Linux keine Critical Section implementieren können, da du die Signals brauchst um RaceConditions zu verhindern (unix/linux verwendet zum bleistift mutexes).

lg,
gentoo

gentoo
2007-12-10, 14:52:51
In diesem Forum treiben sich nur Linux DAUs herum, hier kann dir also keiner helfen.

Das weiß ich aus Erfahrung, alle meine Probleme zu Fragen die ich hier gestellt habe, habe und mußte ich bis jetzt alle selber lösen.

Hier findest du höchstens Dummschwätzer die dir ein RTFM an den Kopf knallen aber selber keine Antwort wissen.
Also Leute die so tun, als würden sie etwas wissen, aber es sind und bleiben DAUs.


a.) Man kennt nicht immer die Lösung zu jedem Problem, das ist normal
und nicht die Ausnahme. Poste dein Problem doch in einem anderen Forum,
wenn dir keiner helfen kann ;)

b.) Ich habe Ihm eine Antwort gegeben - eben daß es nicht geht.

c.) Er wollte Hilfe zu Unix und nicht Linux - ergo sind wir höchstens alle Unix-DAUs ;)


mfg,
Christoph