Test per SC4
SRM, servers, clients
SRM e SC4




Su GRID, SRM ha il compito di
interfacciare differenti implementazioni di
storage managers
Rappresenta la “novità” nel file transfer
I test preliminari devono “provocare” le
funzionalità di base
Ove le funzionalità siano presenti e
funzionanti, se ne valutano le prestazioni
scegliendo opportuni parametri per le
misure
Cosa fa SRM e come funziona



SRM non è un protocollo di trasferimento,
né di I/O
SRM interviene nella fase iniziale di
negoziazione del protocollo comune tra
client e server
Successivamente l’operazione continua
usando un protocollo standard
(tipicamente srmcp “converge” verso
gsiftp)
SRM

Server
•
•
•
•
dCache
DPM
StoRM
DRM

Client
• DRM SRM client


SRM v1
SRM v2
• DPM

No Client SRM (solo lcg-*)
• dCache


srmcp
/opt/d-cache/srm/bin
srmcp 1/3
$ /opt/d-cache/srm/bin/srmcp -debug file:////home/enzo/testo
srm://pccms5.cmsfarm1.ba.infn.it:8443//dpm/cmsfarm1.ba.infn.it/home/gridit/testo
Storage Resource Manager (SRM) CP Client version 1.17
Copyright (c) 2002-2005 Fermi National Accelerator Laborarory
SRM Configuration:
debug=true
gsissl=true
help=false
pushmode=false
userproxy=true
buffer_size=131072
tcp_buffer_size=0
stream_num=10
config_file=/home/enzo/.srmconfig/config.xml
glue_mapfile=/opt/d-cache/srm/conf/SRMServerV1.map
webservice_path=srm/managerv1.wsdl
webservice_protocol=https
gsiftpclinet=globus-url-copy
protocols_list=http,gsiftp
save_config_file=null
srmcphome=/opt/d-cache/srm
urlcopy=/opt/d-cache/srm/sbin/url-copy.sh
x509_user_cert=/home/enzo/.globus/usercert.pem
x509_user_key=/home/enzo/.globus/userkey.pem
x509_user_proxy=/tmp/x509up_u500
x509_user_trusted_certificates=/etc/grid-security/certificates
retry_num=20
retry_timeout=10000
wsdl_url=null
use_urlcopy_script=false
connect_to_wsdl=false
delegate=true
full_delegation=true
from[0]=file:////home/enzo/testo
to=srm://pccms5.cmsfarm1.ba.infn.it:8443//dpm/cmsfarm1.ba.infn.it/home/gridit/testo
srmcp 2/3
Wed Dec 14 19:16:31 CET 2005: starting SRMPutClient
Wed Dec 14 19:16:31 CET 2005: SRMClient(https,srm/managerv1.wsdl,true)
Wed Dec 14 19:16:31 CET 2005: connecting to server
Wed Dec 14 19:16:31 CET 2005: connected to server, obtaining proxy
SRMClientV1 : connecting to srm at httpg://pccms5.cmsfarm1.ba.infn.it:8443/srm/managerv1
Wed Dec 14 19:16:32 CET 2005: got proxy of type class org.dcache.srm.client.SRMClientV1
SRMClientV1 :
put, sources[0]="/home/enzo/testo"
SRMClientV1 :
put,
dests[0]="srm://pccms5.cmsfarm1.ba.infn.it:8443//dpm/cmsfarm1.ba.infn.it/home/gridit/testo"
SRMClientV1 :
put, protocols[0]="http"
SRMClientV1 :
put, protocols[1]="dcap"
SRMClientV1 :
put, protocols[2]="gsiftp"
SRMClientV1 : put, contacting service httpg://pccms5.cmsfarm1.ba.infn.it:8443/srm/managerv1
doneAddingJobs is false
copy_jobs is empty
Wed Dec 14 19:16:35 CET 2005: srm returned requestId = 72
Wed Dec 14 19:16:35 CET 2005: sleeping 1 seconds ...
srmcp 3/3
Wed Dec 14 19:16:37 CET 2005: FileRequestStatus with
SURL=srm://pccms5.cmsfarm1.ba.infn.it:8443//dpm/cmsfarm1.ba.infn.it/home/gridit/testo is Ready
Wed Dec 14 19:16:37 CET 2005:
received
TURL=gsiftp://pccms5.cmsfarm1.ba.infn.it/pccms5:/storage1/cms/2005-12-14/testo.72.0
doneAddingJobs is false
copy_jobs is not empty
copying CopyJob, source = file:////home/enzo/testo destination =
gsiftp://pccms5.cmsfarm1.ba.infn.it/pccms5:/storage1/cms/2005-12-14/testo.72.0
GridftpClient: memory buffer size is set to 131072
GridftpClient: connecting to pccms5.cmsfarm1.ba.infn.it on port 2811
GridftpClient: gridFTPClient tcp buffer size is set to 0
GridftpClient: gridFTPWrite started, source file is java.io.RandomAccessFile@1a8773c destination
path is pccms5:/storage1/cms/2005-12-14/testo.72.0
GridftpClient: gridFTPWrite started, destination path is pccms5:/storage1/cms/2005-1214/testo.72.0
GridftpClient: parallelism: 10
GridftpClient: adler 32 for file java.io.RandomAccessFile@1a8773c is 3912265078
GridftpClient: could not set addler 32 org.globus.ftp.exception.UnexpectedReplyCodeException:
Custom message: Unexpected reply: 500 'SITE CHKSUM e9306d76': command not understood.
GridftpClient: waiting for completion of transfer
GridftpClient: gridFtpWrite: starting the transfer in emode to pccms5:/storage1/cms/2005-1214/testo.72.0
GridftpClient: DiskDataSink.close() called
GridftpClient: gridFTPWrite() wrote 299bytes
GridftpClient: closing client : org.dcache.srm.util.GridftpClient$FnalGridFTPClient@1c4f0f8
GridftpClient: closed client
execution of CopyJob, source = file:////home/enzo/testo destination =
gsiftp://pccms5.cmsfarm1.ba.infn.it/pccms5:/storage1/cms/2005-12-14/testo.72.0 completed
setting file request 0 status to Done
doneAddingJobs is true
copy_jobs is empty
stopping copier
[pccms22] /home/enzo >
Bench
Client C
multilibreria e multiprotocollo
per I/O e trasferimento di file
da, verso e tra storage managers
Bench

Permette di usare i protocolli comunemente usati
in GRID per effettuare:
• Accesso ai file (file, rfio autenticato, rfio standard, pnfs,
dcap, gsidcap)
• Trasferimento (gsiftp)



Permette di usare ogni protocollo mediante
chiamate a differenti API (dcap, GFAL, rfio
standard)
Permette di testare anche SRM (GFAL)
Misura i tempi di tutti i trasferimenti al fine di
produrre statistiche su
• Tempi di apertura/chiusura di file
• Tempi di scrittura/lettura
Bench e le misure
L’uso di script Bash/Perl permette la
realizzazione di test complessi
 L’esecuzione contemporanea su
più client verso un unico server

• può aspirare a saturare la banda che un
disk server può garantire
• può verificare il bilanciamento del carico
• può estrapolare il tempo di attesa per le
negoziazioni SRM
./bench -w -c 5 -s 12 -l gfal –e srm://pccms5.cmsfarm1.ba.infn.it:8443/dpm/ba.infn.it/home/gridit/
Bench <-> SRM



Bench non riesce a entrare nel dettaglio
dei messaggi che i server forniscono
relativamente alle singole operazioni
Questo è importante nel caso di SRM,
dove il Report richiede la compliance
relativamente ai singoli metodi di SRM
Il client SRM di DRM
• sembra supportare pienamente SRMv1/v2
• entra sufficientemente in dettaglio nelle
singole operazioni
• permette di testare l’interoperabilità v1<->v2
Codice e documentazione
È disponibile del codice, che è in
continua modifica
 Il codice sarà disponibile e
periodicamente aggiornato sul wiki
 La documentazione è user-friendly, in
forma di esempi guidati

Sviluppi previsti
Creazione di un tool in C che apre n
file su server (n≈103) e misura le
“reazioni” del server e del client
 Realizzazione di script Bash/Perl per
test più complessi, seguendo le
direttive del report
 Reperire nuove informazioni sui CVS
dei server e dei client

Scarica

DPM