Re: Extreme CPU usage by enbd-client?

Bas van Schaik <[email protected]> Mon, 20 Mar 2006 20:57:52 +0100
Newsgroups gmane.linux.enbd.general
Message-ID <[email protected]>
Peter T. Breuer wrote:
> "Also sprach Bas van Schaik:"
> 
>>Quote (Denis Bonnenfant):
>>
>>>Perfs are pretty good. Without any tweaking,  36 MB/s during
>>>reconstruction over GbE link, and bonnie between 12-20 MB/s Writes / 20-50 MB/s
>>> reads. It's a little bit less for writes thant with direct access to disk, and
>>>slightly more for reads.
>>
>>My eyes dropped out after reading this: 35MB/s during reconstruction?!
> 
> 
> I suppose he might have been using FR1. But higher rates are perfectly
> possible.
It keeps getting better :), I was happy with the 5MB/s I had on the
other machine, but currently (after setting the merge_requests to 9999)
the sync speed is 10MB/s! The total bandwith used now (on my network
interface), is around 32MB/s. I don't exactly know where Denis was
talking about (sync speed or total bandwith on his NIC), but I now
understand that finetuning enbd can really speed things up!


> 
> Are you aggregating requests? What does /proc/nbdinfo show for the
> request sizes? Over a Gfast ethernet you want to aggregate requests
> if you can. Echo something to nbdinfo (I forget what) or echo something
> to a proc/sys area ...
> 
>    % cat /proc/sys/dev/enbd/devices/a/merge_requests
>    0
> 
> Set that to some-large-number.
Done that, it helps a lot! However, I don't really know what those
"request sizes" are exactly, and how to find them in nbdinfo. There's
nothing like "request size" in there?


>>I've tried multiple block sizes, multiple combinations of servers (to
> 
> 
> Well, larger blocksizes should show something!
Didn't show anything at all. What block size would you advise on a
GBit-network?



>>test if one of the servers is the bottleneck), but the difference
>>between a P4 2.8GHz client and a P4 2.6GHz client makes me think the
>>problem lies within the client.
> 
> ??
> 
I tried to explain, that I didn't think the "storage servers" were the
bottleneck, but the client, since the speed dropped from 5MB/s to
3.5MB/s after changing client hardware.


>>One thing which attracts my attention, is the CPU usage on the client.
> 
> Look at nbdinfo for data.
> 
>>FYI, the top output during the reconstruction:
>>
>>>  PID USER      PR  NI  VIRT  RES  SHR S %CPU %MEM    TIME+  COMMAND
>>> 3072 root      15   0  1932  988 1500 S 10.0  0.2   1:07.01 enbd-client
> 
> 
> Not terribly high, but you seem to have a lot of them!
Maybe I'm making a terrible mistake here, but I've got four different
machines acting as a "storage server", each exporting one block device.
There's one "frontend" machine which connects to the four servers and
imports the block devices. Per block device (= per server), two channels
are used (default). So why are you surprised about the amount of
clients? Am I doing something fundamentally wrong?

--Bas