[Pvfs2-developers] [PATCH] threaded kmod helper

Phil Carns carns at mcs.anl.gov
Thu Feb 21 14:58:00 EST 2008


Sam Lang wrote:
> 
> On Feb 14, 2008, at 4:34 PM, Pete Wyckoff wrote:
> 
>> Add --enable option to build a threaded pvfs2-client-core, that is,
>> an executable linked against pvfs2-threaded.so.
>>
>> Remove the "--threaded" argument from pvfs2-client.  Whatever version
>> of client-core that was configured is all that is available at runtime.
>> It will always be installed as pvfs2-client-core.
>> ---
>> Makefile.in                          |   15 +++++++--------
>> configure                            |   17 +++++++++++++++--
>> configure.in                         |   20 ++++++++++++++++++++
>> src/apps/kernel/linux/module.mk.in   |    9 ++++++---
>> src/apps/kernel/linux/pvfs2-client.c |   31 
>> ++-----------------------------
>> 5 files changed, 50 insertions(+), 42 deletions(-)
>>
>>
>> What does everybody think about this?  I had complained a long time
>> ago about always getting a pvfs2-client-core and
>> pvfs2-client-core-threaded during a kernapps build.  The latter
>> brings in the entire libpvfs2-threaded.a and all the objects for
>> that.
>>
>> I don't have a feel for who uses the threaded client core.  The only
>> way to use it now is to start pvfs2-client with the "--threaded"
>> option.  So I made the --enable option default to off.  Is there a
>> reason to want both threaded and non-threaded versions installed?
> 
> I think the patch looks great.  My only concern is that this will make 
> the threaded client daemon never get used.  My view is that we should 
> probably have the threaded version as the default.  I think in the 
> general case, the threaded version is going to perform better.  Its 
> pretty hard to buy a system that doesn't have at least two cores today, 
> and even on a uni-processor system, the performance of the threaded 
> daemon shouldn't be much worse than the non-threaded.
> 
> I originally added the threaded client functionality to see if it would 
> help performance, but it turned out to be buggy.  Maybe with Phil's 
> recent thread-safety fixes to the system interfaces, we should revisit 
> making the threaded daemon the default.

FYI, I think the threaded client just got a boost in stability.  There 
was a subtle bug in the how the job thread mgr was dealing with the 
device that made it possible for it to pull operations out that could 
not be handled.  I think this could technically happen even with the 
non-threaded client, but this hasn't been a big deal because it could 
only be triggered with a) a lot of concurrent operations b) and a 
pvfs2-client-core daemon running fast enough to empty out the device 
queue (much easier w/ a dedicated thread).

There was also in the last week or two a fix to how bmi_tcp kept track 
of socket errors that I suspect was relevant to the threaded client core 
as well, but I was tracking that down in the context of some server 
stuff so I can't say for sure.

I agree with everything in this email thread, just commenting on the 
state of the threaded client in case anyone following was curious.

> I'm not sure that the overhead of a single operation will be affected 
> much, honestly.  We can't disable threads and locking entirely, since we 
> need the remount thread running.  I think the patch I just committed to 
> fix the segfault in HEAD will likely help with individual operation 
> performance more than disabling threads would.  Just my 2c though.
>  Its hard to get a feeling for how much the threaded daemon would help 
> without a thorough performance analysis of the two on a number of 
> different systems.  Something I would like to do at some point, but its 
> pretty low on the list.

I don't have a good feel for the threaded / non threaded impacts 
performance either without looking into it more.

For the non-threaded version, that remount thread really bugs me.  It 
seems like there has to be another way to accomplish whatever its doing. 
  Its a shame to have to pull in lpthread and turn on all of the library 
locks when the client-core doesn't need either for 99% of what it does.

-Phil


More information about the Pvfs2-developers mailing list