Hi Alessandra
That line appears in gridftp/server/src/globus_i_gfs_data.c (it may never be called but the general idea may be repeated elsewhere)
if(tcp_mem_limit > 0)
{
/* if they want too much */
if(tcp_mem_limit < handle->info.tcp_bufsize)
{
globus_ftp_control_tcpbuffer_t tcpbuffer;
globus_gfs_log_message(
GLOBUS_GFS_LOG_WARN,
"Limiting TCP memory to: %d on %d\n",
tcp_mem_limit, handle->info.nstreams);
tcpbuffer.mode = GLOBUS_FTP_CONTROL_TCPBUFFER_FIXED;
tcpbuffer.fixed.size = tcp_mem_limit / handle->info.nstreams;
The tcp_mem_limit config option doesn't appear to be very well documented. Perhaps BNL use it?
Lcg-cp doesn't have the url-copy tcp-bs option and sets tcp_bs = 0 when calling out into globus which *should* result in setsockopt() never getting called (GLOBUS_FTP_CONTROL_TCPBUFFER_DEFAULT). It would be useful to see if ever calls setsockopt(,,SO_(RCV|SND)BUF,), even with the default value, as this may halt subsequent attempts to autotune.
It is a shame there doesn't appear to be an easy way to monitor what buffer sizes a particular socket has configured (without patching the kernel).
John
From: Alessandra Forti [mailto:[log in to unmask]]
Sent: 22 February 2013 12:26
To: Green, John (STFC,RAL,SC)
Cc: [log in to unmask]
Subject: Re: sonar tests to BNL
Is globus perhaps calling setsockopt() and disabling autotuning (strace should show this) and/or trying to be too clever. Something like the "tcpbuffer.fixed.size = tcp_mem_limit / handle->info.nstreams;" in the gridftp source could perhaps be relevant?
I think too gridftp is the culprit here and not the kernel. I can try stracing transfers next week if nobody else beats me to it. Are you guessing the source code or did you look into it?
cheers
alessandra
--
Scanned by iCritical.
|