[ 
https://issues.apache.org/jira/browse/HADOOP-2144?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel#action_12539697
 ] 

rangadi edited comment on HADOOP-2144 at 11/2/07 1:46 PM:
---------------------------------------------------------------

> With 128MB blocks, it should be possible to see this with 'iostat -x' or 
> 'sar', reporting once per second. If they're sync'd, then you'd expect to see 
> one drive at 100% busy and the others at 0% busy, with the busy drive 
> switching every three seconds. If they're out of sync, then you'd expect the 
> drives to mostly be 100% busy, but some to occasionally be idle.

In my test, I did 'iostat -x 3' with 4 clients, most of the time only 2 disks 
we rebusy (50 - 70% util). This is also because 4 client test was cpu bound.

In ideal case where there are no other bottlenecks other than disks, a stable 
equilibrium would be reading from all the disks. Assume clients are all 
synchronized to start with. Then all will be reading from same kernel buffer 
from one disk at the best speed for one disk. As soon as there is some 
disturbance, client A goes ahead of client B, more the separation more the 
change in throughput will be (after some initial threshold). So this will get 
worse till the point where the clients read from different disks, in which 
case, both will catch up in speed.

      was (Author: rangadi):
    > With 128MB blocks, it should be possible to see this with 'iostat -x' or 
'sar', reporting once per second. If they're sync'd, then you'd expect to see 
one drive at 100% busy and the others at 0% busy, with the busy drive switching 
every three seconds. If they're out of sync, then you'd expect the drives to 
mostly be 100% busy, but some to occasionally be idle.

In my test, I did 'iostat -x 3' with 4 clients most of the time only 2 disks we 
busy (50 - 70% util). This also because 4 client test was cpu bound.

In ideal case where there are no other bottlenecks other than disks, a stable 
equilibrium would be reading from all the disks. To start with, assume there 
are all synchronized to start with. Then all will be reading from same kernel 
buffer from one disk, which is the best speed for one disk. As soon as there is 
some disturbance, client A goes ahead of client B, more the separation more the 
difference in speeds will be (after some initial threshold). So this will get 
worse till the point where the clients read from different disks, in which 
case, second client catches up in speed.
  
> Data node process consumes 180% cpu 
> ------------------------------------
>
>                 Key: HADOOP-2144
>                 URL: https://issues.apache.org/jira/browse/HADOOP-2144
>             Project: Hadoop
>          Issue Type: Improvement
>          Components: dfs
>            Reporter: Runping Qi
>
> I did a test on DFS read throughput and found that the data node 
> process consumes up to 180% cpu when it is under heavi load. Here are the 
> details:
> The cluster has 380+ machines, each with 3GB mem and 4 cpus and 4 disks.
> I copied a 10GB file to dfs from one machine with a data node running there.
> Based on the dfs block placement policy, that machine has one replica for 
> each block of the file.
> then I run 4 of the following commands in parellel:
> hadoop dfs -cat thefile > /dev/null &
> Since all the blocks have a local replica, all the read requests went to the 
> local data node.
> I observed that:
>     The data node process's cpu usage was around 180% for most of the time .
>     The clients's cpu usage was moderate (as it should be).
>     All the four disks were working concurrently with comparable read 
> throughput.
>     The total read throughput was maxed at 90MB/Sec, about 60% of the 
> expected total 
>     aggregated max read throughput of 4 disks (160MB/Sec). Thus disks were 
> not a bottleneck
>     in this case.
> The data node's cpu usage seems unreasonably high.

-- 
This message is automatically generated by JIRA.
-
You can reply to this email to add a comment to the issue online.

Reply via email to