curl-library
Re: libCurl taking long time to download
From: <johansen_at_sun.com>
Date: Thu, 3 Sep 2009 16:48:05 -0700
Received on 2009-09-04
Date: Thu, 3 Sep 2009 16:48:05 -0700
On Thu, Sep 03, 2009 at 04:53:18PM -0400, Sandeep R M wrote:
> Hi Daniel,
>
> I was just trying to see which is the best option available, so I had to
> conduct this test.
>
> Solaris version being used is,
> SunOS test 5.10 Generic_127111-09 sun4u sparc SUNW,SPARC-Enterprise
> I am using curl version 7.19.0 (we only have this version available
> currently).
I get nearly identical times for curl and wget, with curl using less sys
time:
curl
----
real 13.384214331
user 0.032008191
sys 0.050414150
wget
----
real 13.108820703
user 0.029270086
sys 0.118620616
Given your high real times compared to the low user/sys time, it seems
like your application is probably spending a lot of time blocking.
Since you're on Solaris 10, you can look at this with DTrace.
On my system the output looks like this:
genunix`cv_timedwait_sig_hires+0x1db
genunix`cv_timedwait_sig+0x32
rpcmod`clnt_cots_kcallit+0x697
nfs`nfs4_rfscall+0x418
nfs`rfs4call+0xb6
nfs`nfs4lookupvalidate_otw+0x267
nfs`nfs4lookup+0x1f7
nfs`nfs4_lookup+0xe3
genunix`fop_lookup+0xed
genunix`lookuppnvp+0x3a3
genunix`lookuppnatcred+0x11b
genunix`lookupnameatcred+0x98
genunix`lookupnameat+0x69
genunix`vn_openat+0x232
genunix`copen+0x418
genunix`open64+0x34
unix`_sys_sysenter_post_swapgs+0x149
378570
genunix`shuttle_resume+0x328
doorfs`door_call+0x2b1
doorfs`doorfs32+0x141
unix`_sys_sysenter_post_swapgs+0x149
8213468
genunix`cv_timedwait_sig_hires+0x1db
genunix`cv_waituntil_sig+0xba
genunix`poll_common+0x461
genunix`pollsys+0xe4
unix`_sys_sysenter_post_swapgs+0x149
13608004750
The values are in nanoseconds, so the interesting stack here is the last
one, which accounts for 13.6 seconds. In this case, I'm performing a
cv_timedwait_sig in the kernel. Essentially, I'm waiting in poll for a
socket to become readable. The door call is a call into NSCD for name
resolution, and the nfs4 call is to my home directory to load the dtrace
script.
I'm attaching the D-script that I used as sleepers.d. In order to run
this, I had dtrace priviliege, which in this case meant I was root.
# dtrace -s sleepers.d -c "<curl command>"
Hope this helps.
-j
- text/plain attachment: sleepers.d