Print

Print


Follow-up Comment #10, bug #100605 (project xrootd):

I have now implemented a worker thread pool and all the message processing
and successful callback handling is done by the workers freeing the polling
thread to do the socket handling. After some basic tests the new client is
faster now.


]=[Wed 13/03/06 11:43
CET]=[ljanyst@idefix:~/Projects/xroot/client/speed_benchmark]
]==> time ./a.out client new tries 100 url
root://eosdevsrv1.cern.ch//eos/dev/2rep/1G blocksize 33554432 parallel 2 &&
time ./a.out client old tries 100 url
root://eosdevsrv1.cern.ch//eos/dev/2rep/1G blocksize 33554432 
[i] Running new client for block size: 33554432, number of reads: 100, file:
root://eosdevsrv1.cern.ch//eos/dev/2rep/1G, parallel reqs: 2
[i] Total time: 28.814980
[i] Reqs/sec: 3.47042
./a.out client new tries 100 url root://eosdevsrv1.cern.ch//eos/dev/2rep/1G  
 2.84s user 5.59s system 29% cpu 28.825 total
[i] Running old client for block size: 33554432, number of reads: 100, file:
root://eosdevsrv1.cern.ch//eos/dev/2rep/1G
[i] Total time: 29.077038
[i] Reqs/sec: 3.43914
./a.out client old tries 100 url root://eosdevsrv1.cern.ch//eos/dev/2rep/1G  
 0.99s user 7.52s system 29% cpu 29.080 total
-varbatim-


]==> time ./a.out client new tries 1000 url
root://eosdevsrv1.cern.ch//eos/dev/2rep/1G blocksize 4194304 parallel 8 &&
time ./a.out client old tries 1000 url
root://eosdevsrv1.cern.ch//eos/dev/2rep/1G blocksize 4194304 
[i] Running new client for block size: 4194304, number of reads: 1000, file:
root://eosdevsrv1.cern.ch//eos/dev/2rep/1G, parallel reqs: 8
[i] Total time: 35.838824
[i] Reqs/sec: 27.9027
./a.out client new tries 1000 url root://eosdevsrv1.cern.ch//eos/dev/2rep/1G 
 4.63s user 8.98s system 37% cpu 35.845 total
[i] Running old client for block size: 4194304, number of reads: 1000, file:
root://eosdevsrv1.cern.ch//eos/dev/2rep/1G
[i] Total time: 42.670237
[i] Reqs/sec: 23.4355
./a.out client old tries 1000 url root://eosdevsrv1.cern.ch//eos/dev/2rep/1G 
 1.06s user 7.11s system 19% cpu 42.676 total


I will implement this now in xrdcopy (this also means multistream support)
and commit later today.

Note that only the messages and thus successful callbacks are handled by the
worker pool. Error conditions and callbacks are still dealt with in the
polling thread. They will be moved to the workers later.

I expect quite a lot more performance tuning and improvements later this
month.

    _______________________________________________________

Reply to this item at:

  <http://savannah.cern.ch/bugs/?100605>

_______________________________________________
  Message sent via/by LCG Savannah
  http://savannah.cern.ch/

########################################################################
Use REPLY-ALL to reply to list

To unsubscribe from the XROOTD-DEV list, click the following link:
https://listserv.slac.stanford.edu/cgi-bin/wa?SUBED1=XROOTD-DEV&A=1