← Back to team overview

sslug-teknik team mailing list archive

Re: Overhead ved systemkald (read fra socket)

 

"Erwin S. Andreasen" wrote:
> Jeg mener at have hørt at et tomt systemkald (som bare skiftede til kernen
> og kom tilbage igen) kostede 5 mikrosekunder på en mid-range P2. Den kan
> så kopiere noget med 500? MB per sekund. På 5 mikrosekunder kan du så
> kopiere 5 * (5 * 10 ^ 8) / 10^6 = 2500 bytes.

OK. Det er et godt udgangspunkt. Måske jeg i virkeligheden burde lave et
lille testprogram?

> Men, se også på readv() som kan indlæse flere usammenhængende områder ind
> i eet hug.

Jeg har kigget på readv(), men kan ikke bruge den, da jeg skal integrere
posterne i eksisterende poster på modtagersiden - det er for besværligt.
Jeg *kan* til gengæld bruge writev() på afsendersiden. Ved du om man kan
risikere at skulle udføre multiple kald til writev() ved blokerende IO,
eller kan man nøjes med et? Det fremgår ikke af min (forældede) UNIX
network programming.

> Lad os sige du kan spare 5 mikrosekunder per blok data ved at bruge den
> ene metode frem for den anden -- så skal du modtage 10000 poster per
> sekund for at du sparer 5% CPU tid.

Det kan skam godt komme til det punkt, hvor jeg skal tænke i de baner.
Der er tale om noget kode der skal rende så hurtigt som muligt, snarere
end bare virke.

Anders
-- 
Anders S. Johansen, Jagtvej 109, 3.tv, 2200 Kbh. N +045 35836565
Wisdom = TANJ + TANSTAAFL


Follow ups

References