RE: i/o tuning

Maulis Adam <maulis@ludens.elte.hu>


> Üdv Mindenkinek!

> Egy DS20-ra (2 processzor, 1G memória) telepítettünk OpenVMS 7.3-2-t és 

A DS20 (mint minden gep) veges mennyisegu IO/sec -et tud, amennyit
a kernel eppen meg kihord. Nalunk 667 MHZ-es DS20E van, egy rovid 
tesztprogram szerint maximum 160 ezer io/sec -et tud a gep/kernel,
ennel tobbet ne is varj tole.


> Tomcat-re OpenCMS került és iszonyatosan lassú.

sajnos nem ismerem a tomcat/opencms -t, azonban van tapasztalatom
a unix alol (gyorsportolt) programokkal.

> Egy oldal kiszolgálása 
> sokszor 10-15 másodperc. Megnéztük a MONITOR SYSTEM-mel és a Buffered I/O 
> ugrott meg nagyon, amikor dolgozott egy kérés kiszolgálásán.

ez egy jellegzetes tunet 'gyorsportolt' programoknal. Varhatoan
arrol van szo, hogy ket programresz kommunikalna egymassal,
es itt a unix pipe helyett a vms MBX driveren keresztul megy.
A unix pipe az stream orientalt, VMS MBX driver pedig rekord.
(ugyan van stream modja is, de) a legteljesebb unix pipe kompatibilitast
ugy szoktak elerni, ha karakterenkent IO-znak. Tehat karakterenkent
tortenik egy $qio(MBX), ami rendkivul megdobja a Bufio ratat, es lassitja
a muveletet.

A dolog orvoslasa rendkivul maceras. A kovetkezo iranyokban
kezdenek kutatni, ha nalam lenne a problema ;)

- hogyan lehet a VMS MBX driver helyett a SYS$PIPEDRIVER.EXE -t (MPA0:) 
  hasznalni (konfiguralas, logikai nev, barmi) [0 leirast talaltam hozza]

- lehetseges, hogy minden egyes cgi (web) hivasonkent lefut egy 
  kornyezet-inicializalo. Ez alaposabb tomcat/opencms ismeretet igenyelne.
  Egyreszt megprobalnam ezt a kornyezet-inicializalast perzisztens cgi 
  megoldassal megszuntetni. [Csak boottimekor fusson ez le, legyen 
  allando processz, stb. Unix alatt tuti van ilyen: a processz krealas,
  java iniditas mindenhol eroforrasigenyes.] Masreszt meg ha ebbe belesulok,
  akkor megprobalnam a kornyezet-inicializalo idejet durvan csokkenteni,
  ez is tomcat/opencms tudast feltetelez.


> Horváth Ferenc


Udv,
Maulis Adam


gyorsportolt: amikor a unixos programokon egy betu valtoztatast sem vegeznek,
hanem a portolashoz szukseges rutinokat implementaljak, "ala".
Azert jelenthet lassulast, mert a VMS eleve bonyolultabb (tehat lassabb)
rutinjaibol implementalnak egy primitivet, amibol aztan az adott program
felepiti a neki szukseges bonyolultat. Rendes portolasnal ezt felismerik,
es attervezessel elejet veszik.


A IO/SEC meroprogramom: (masik ablakban MON SYS futtatva)

/* file: diotest.c
** Author: Adam Maulis
** cre date: 21-feb-2006
** environment: OpenVMS/Alpha, DecC 6.2
*/


#include starlet
#include iodef
#include descrip
$DESCRIPTOR(nulldev,"NLA0:");
int main()
{
    int result;
    unsigned short ch;
    result = sys$assign(&nulldev, &ch,  0, 0, 0);
    if( 1 != (result & 1) ){
        return result;
    }

    while(1){
        sys$qiow (0, ch, IO$_WRITEVBLK, 0, 0, 0, 0, 0, 0, 0, 0, 0);
    }

    return 1;
}