Hi,

On 22 September 2006 10:28, David Masover wrote:
> Azureus had a problem.  Once it got up to a good clip downloading, it
> would thrash the disk.  It would thrash the disk, and the system, so
> hard that even web browsing was difficult, due to disk access being
> many, many times slower than Internet access, even an Internet which
> is being hogged by BitTorrent.
>
> After changing Azureus' cache to 32 megs, and telling it not to write
> files immediately, I thought I had the problem solved -- no thrashing
> at all.  Until the cache got full.  Then:  Thrashing.  Less freqent,
> but much more vigorous -- Azureus becomes extremely unresponsive for
> a few minutes.
>
> It shouldn't be touching the disk AT ALL when there's over a gig of
> FREE RAM (as in, neither buffer nor cache nor actually used yet), and
> the file I'm attempting to download is less than 200 megs.  I tried
> an strace, but as I am not at all skilled in the ways of debugging or
> reverse engineering, I got syscall spam -- a 200 meg log file, and
> when I finally found a decent way to analyze it, I found most of
> Azureus' system call wall time is spent in futex().  Huh?

I guess futex (, FUTEX_WAIT, ) calls can be ignored in this analysis. 
They just wait another threat to call futex(, FUTEX_WAKE, ).  
Interesting to find that thread and look what it was doing before 
FUTEX_WAKE? Or FUTEX_WAIT returns ETIMEDOUT?

> Looked up "futex" on Wikipedia, and I still have no clue how this
> makes any sense.  Either futex was somehow thrashing the disk, or
> Azureus has somehow managed to fork completely out of strace's
> control.  Or maybe it's somehow something that the kernel is doing on
> its own, which is somehow forcing azureus to block, but somehow not
> tripping strace's timers while doing so.
>

[ ... ]

-- 
Alex.

Reply via email to