Dear developers,

I'm currently running the CVS head of Dec 11, 2008. I apologies in advance for missing on details. If needed I'll provide more.

Thank you, and
lots of wonderful wishes for Xmas and for the New Year!!!
(this is the last email you'll get from me this year, I promise :))
l.

Observation 1:
When trying to run big numbers of clients simultaneously, the server crushes. For me it crushed with 70 and 100 clients fired at the same time.

Observation 2:
After running one query in a multi-user scenario (N clients/threads simultaneously) the memory footprint of mserver (% of the memory that the server occupies) grew. After repeating the experiment M times the memory grew each time with a constant. Running the same query sequentially the same number of times leaves the footprint of mserver constant. Could it be a faulty memory cleaning?

Query: q3.xq
let $col := fn:collection("MotiesTweedeKamer")
let $years := fn:distinct-values(
              for $date in $col//hiddendatum
              return fn:substring(fn:string($date),1,4))
for $y in $years
order by $y ascending
return <result year="{$y}" count="{
     count($col//document[fn:substring(fn:string(.//hiddendatum),1,4) = $y])
}"/>

N=50
M=1
$ perl runNclients.pl N=50
$ top
PID USER      PR  NI  VIRT  RES  SHR S %CPU %MEM    TIME+  COMMAND          
28563 lafanasi  20   0 6266m 5.1g 100m S    0 26.0  10:50.71 Mserver           
M=2
PID USER      PR  NI  VIRT  RES  SHR S %CPU %MEM    TIME+  COMMAND          
28563 lafanasi  20   0 7546m 5.9g 100m S    0 30.1  21:42.67 Mserver           
...
N=60
M=10
PID USER      PR  NI  VIRT  RES  SHR S %CPU %MEM    TIME+  COMMAND          
31182 lafanasi  20   0 17.3g 8.3g 100m S    0 42.3 263:45.37 Mserver 
...
M=30
PID USER      PR  NI  VIRT  RES  SHR S %CPU %MEM    TIME+  COMMAND          
31182 lafanasi  20   0 22.7g 9.6g 100m S    0 48.8 395:08.87 Mserver           

Sequential run:

N=1
M=50 times
PID USER      PR  NI  VIRT  RES  SHR S %CPU %MEM    TIME+  COMMAND          
28372 lafanasi  20   0  839m 430m 100m S    1  2.1   6:26.65 Mserver           

M=100 times
PID USER      PR  NI  VIRT  RES  SHR S %CPU %MEM    TIME+  COMMAND          
28372 lafanasi  20   0  839m 430m 100m S    1  2.1   6:26.65 Mserver           


Observation 3:
The times it takes to run 10 Tijah search queries simultaneously is the same as the time it takes to run them sequentially. The percentage of CPU used in both cases by mserver is also similar. Does tijah support multi-users?

Query: q2.xq
let $opt := <TijahOptions ft-index="polietiekedata" ir-model="NLLR"/>
let $c := collection("HAN")
let $qid :=  tijah:query-id($c, "//spreker[about(.,%KEYWORD%)]", $opt)
for $res in tijah:nodes($qid)
return <pair>{( string($res/@naam), tijah:score($qid, $res))}</pair>

20 users/threads
stopMserver,startMserver (to make sure that the server freed the memory)
$time Run20Threads(mclient -lx q2.xq)
0.134u 0.118s 0:20.01 1.1%    0+0k 0+8io 0pf+0w

sequential run, 20 times
stopMserver, startMserver
$ time for i in `seq 1 10`; do mclient -lx q2.xq; done
0.060u 0.067s 0:19.74 0.6%    0+0k 0+8io 0pf+0w

Observation 4:
The mserver memory footprint grows very fast when running Tijah queries. When the footprint reaches 98% the query processing time gets really slow or the server crushes.

Query: the same as above

Sequential run, M=90 times
$stopMserver, startMserver
$for i in `seq 1 10`; do mclient -lx q2.xq; done
$ top
PID USER      PR  NI  VIRT  RES  SHR S %CPU %MEM    TIME+  COMMAND          
24527 lafanasi  20   0 26.2g  19g  80m S   66 98.0   4:24.57 Mserver