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

Weston Pace commented on ARROW-10846:
-------------------------------------

A related topic will be how best to pool filesystem access.  Right now, with 
the synchronous operations, I'm pretty sure every thread's requests go directly 
to the underlying filesystem.  This is not ideal in most cases.

For example, if a user wants to read in a dataset of 20 parquet files and they 
are running against a local disk of some kind then it is probably not the best 
approach to have 20 filesystem requests running in parallel.  In the worst case 
this might lead to random reads instead of sequential reads and bog down I/O.

It's related to this issue because any future-returning variants will need to 
setup I/O threads separate from the calling thread (assuming we aren't 
enforcing the filesystem implementation be asynchronous).  These probably 
should not come from the default compute thread pool since we shouldn't block 
on those.  Do we setup a new thread for every request (this is kind of similar 
to the current synchronous approach) or do we do some kind of I/O thread 
pooling?

I think this is an interesting topic to start looking into.  Does anyone know 
if there is any existing work looking at I/O pooling?

> [C++] Add async filesystem operations
> -------------------------------------
>
>                 Key: ARROW-10846
>                 URL: https://issues.apache.org/jira/browse/ARROW-10846
>             Project: Apache Arrow
>          Issue Type: Improvement
>          Components: C++
>            Reporter: Antoine Pitrou
>            Priority: Major
>
> It would probably be useful to have Future-returning variants of some 
> filesystem operations (at least {{GetFileInfo}} and 
> {{OpenInput(File|Stream)}}).



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

Reply via email to