[ 
https://issues.apache.org/jira/browse/HDFS-425?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=12998114#comment-12998114
 ] 

Brian Bockelman commented on HDFS-425:
--------------------------------------

This is most likely due to the kernel's buffer size.  Even though HDFS performs 
large reads (perhaps you use the default 10MB), FUSE will transfer back to the 
kernel in chunks of 4kb.  That is, every 4kb of reads requires 2 context 
switches -- the slower CPUs simply get drowned out by number of context 
switches.  This also limits the overall throughput, even on faster CPUs.

Looking in the kernel docs (found via google):
http://www.mjmwired.net/kernel/Documentation/filesystems/fuse.txt

It appears there is a max_read option for FUSE that might help here.  Run with 
"-d" and see if you are getting 128KB-sized reads when FUSE.

It should be possible to use hdfsRead instead of hdfsPread for sequential reads 
(a-la cat'ing a file).

> Major performance drop on slower machines
> -----------------------------------------
>
>                 Key: HDFS-425
>                 URL: https://issues.apache.org/jira/browse/HDFS-425
>             Project: Hadoop HDFS
>          Issue Type: Bug
>          Components: contrib/fuse-dfs
>            Reporter: Marc-Olivier Fleury
>
> When running fuse_dfs on machines that have different CPU characteristics, I 
> noticed that the performance of fuse_dfs is very sensitive to the machine 
> power. 
> The command I used was simply a cat over a rather large amount of data stored 
> on HDFS. Here are the comparative times for the different types of machines:
> Intel(R) Pentium(R) 4 CPU 2.40GHz :                                2 min 40 s 
> Intel(R) Pentium(R) 4 CPU 3.06GHz:                                 1 min 50 s 
> 2 x Intel(R) Pentium(R) 4 CPU 3.00GHz:                           0 min 40 s 
> 2 x Intel(R) Xeon(TM) MP CPU 3.33GHz:                           0 min 28 s 
> Intel(R) Core(TM)2 Quad CPU    Q6600  @ 2.40GHz      0 min 15 s
> I tried to find other explanations for the drop in performance, such as 
> network configuration, or data locality, but the faster machines are the ones 
> that are "further away" from the others considering the network 
> configuration, and that don't run datanodes.
> top shows that the CPU usage of fuse_dfs is between 80-90% on the slower 
> machines, and about 40% on the fastest one.
> This leads me to the conclusion that fuse_dfs consumes a lot of CPU 
> resources, much more than expected.
> Any help or insight concerning this issue will be greatly appreciated, since 
> these difference actually result in days of computations for a given job.
> Thank you

-- 
This message is automatically generated by JIRA.
-
For more information on JIRA, see: http://www.atlassian.com/software/jira

        

Reply via email to