You are viewing a plain text version of this content. The canonical link for it is here.
Posted to hdfs-dev@hadoop.apache.org by "István Fajth (Jira)" <ji...@apache.org> on 2020/11/24 03:54:00 UTC

[jira] [Created] (HDFS-15692) Improve furse_dfs read performace

István Fajth created HDFS-15692:
-----------------------------------

             Summary: Improve furse_dfs read performace
                 Key: HDFS-15692
                 URL: https://issues.apache.org/jira/browse/HDFS-15692
             Project: Hadoop HDFS
          Issue Type: Improvement
          Components: fuse-dfs
            Reporter: István Fajth


Currently fuse_dfs uses a prefetch buffer to read from HDFS via libhdfs' pread method.

The algorithm inside fuse_read.c in short does the following:
 if the rdbuffer size is less then the buffer provided
 then
  reads directly to the buffer
 else
  grab lock
    if the preftch buffer does not have more data
    then
      fills the prefetch buffer
    endif
    fills the supplied buffer via memcpy from the prefetch buffer
  release lock
endif

It would be nice to have a background thread and double prefetch buffers, so while one buffer serves the reads coming from the local client, the other can prefetch the data, with that we can improve the read speed, especially with EC encoded files.

According to some measurements I did, if I increase the read buffer, there is a significant change in runtime, with 64MB the runtime is really closer to HDFS by a large margin. Interestingly 128MB as the buffer size does not perform well, but 256MB is even more closer to what the dfs client can provide. (16 vs 18 seconds with rep3 files, while in par with ec encoded files dfs vs fuse)

So it seems it is worth to stream continuously a larger chunk of data, at least with pread, but in case we have a separate fetching thread and double buffering, we don't even need positioned reads, simply just continuous streaming of data with read.



--
This message was sent by Atlassian Jira
(v8.3.4#803005)

---------------------------------------------------------------------
To unsubscribe, e-mail: hdfs-dev-unsubscribe@hadoop.apache.org
For additional commands, e-mail: hdfs-dev-help@hadoop.apache.org