[Pvfs2-developers] [PATCH] threaded kmod helper
Sam Lang
slang at mcs.anl.gov
Thu Feb 21 15:27:33 EST 2008
On Feb 21, 2008, at 1:58 PM, Phil Carns wrote:
> 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.
Yeah I agree. I'm pretty sure it could be done with another state
machine like our unexpected_sm.
-sam
>
>
> -Phil
>
More information about the Pvfs2-developers
mailing list