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