[prev in list] [next in list] [prev in thread] [next in thread]
List: kde-frameworks-devel
Subject: Re: Re KIO workers
From: Alexander Lohnau <alexander.lohnau () gmx ! de>
Date: 2021-06-05 16:51:58
Message-ID: 4026463.ElGaqSPkdT () user-20frs0y40z
[Download RAW message or body]
On Saturday, 5 June 2021 17:51:18 CEST David Faure wrote:
> On samedi 5 juin 2021 16:29:10 CEST Volker Krause wrote:
> > Do KIO slaves still need the klauncher/kinit loading mechanism?
>
> No. My request for developers to test KIO_FORK_SLAVES=1
> for daily use is so that apps fork kio worker processes directly, without
> going via klauncher/kinit. BTW it seems to work fine. I wonder if we should
> toggle that in 5.84, as part of the incremental move to the KF6 world.
>
> > or could
> > that be replaced by json metadata based plugin loading as well?
>
> Err, that's an orthogonal question.
That was meant regarding https://invent.kde.org/frameworks/kio/-/blob/master/src/
kioslave/kioslave.cpp#L73[1], similar to https://phabricator.kde.org/T13808[2].
But because SlaveBase is not a QObject we could not do this during KF5 times easily. It
was just an idea :)
>
> When not going via klauncher/kinit, the app first launches the kioslave5
> process, which then loads the .so with the kio worker plugin. As you can
> see from your process list:
>
> PREFIX/lib64/libexec/kf5/kioslave5 PREFIX/lib64/plugins/kf5/kio/file.so file
> local:/run/user/1000/kded5ymjnPa.3.slave-socket
>
> That .so is determined by slave.cpp using
> QString lib_path = KPluginLoader::findPlugin(_name);
> which I believe means it finds the plugin by filename, no .protocol file
> needed and no json metadata needed, right?
>
> > - is the performance benefit of kinit still relevant there?
>
> We decided it wasn't. For KIO workers it was never measured anyway.
>
> > - for in-process KIO that would be needed anyway
>
> That would remove the separate process (kioslave5) from the equation
> but that's unrelated to plugin loading.
Regards
Alex
--------
[1] https://invent.kde.org/frameworks/kio/-/blob/master/src/kioslave/kioslave.cpp#L73
[2] https://phabricator.kde.org/T13808
[Attachment #3 (unknown)]
<html>
<head>
<meta http-equiv="content-type" content="text/html; charset=UTF-8">
</head>
<body><p style="margin-top:0;margin-bottom:0;margin-left:0;margin-right:0;">On \
Saturday, 5 June 2021 17:51:18 CEST David Faure wrote:</p> <p \
style="margin-top:0;margin-bottom:0;margin-left:0;margin-right:0;">> On \
samedi 5 juin 2021 16:29:10 CEST Volker Krause wrote:</p> <p \
style="margin-top:0;margin-bottom:0;margin-left:0;margin-right:0;">> \
> Do KIO slaves still need the klauncher/kinit loading mechanism?</p> <p \
style="margin-top:0;margin-bottom:0;margin-left:0;margin-right:0;">> \
</p> <p style="margin-top:0;margin-bottom:0;margin-left:0;margin-right:0;">> \
No. My request for developers to test KIO_FORK_SLAVES=1</p> <p \
style="margin-top:0;margin-bottom:0;margin-left:0;margin-right:0;">> for \
daily use is so that apps fork kio worker processes directly, without</p> \
<p style="margin-top:0;margin-bottom:0;margin-left:0;margin-right:0;">> \
going via klauncher/kinit. BTW it seems to work fine. I wonder if we \
should</p> <p style="margin-top:0;margin-bottom:0;margin-left:0;margin-right:0;">> \
toggle that in 5.84, as part of the incremental move to the KF6 world.</p> \
<p style="margin-top:0;margin-bottom:0;margin-left:0;margin-right:0;">> \
</p> <p style="margin-top:0;margin-bottom:0;margin-left:0;margin-right:0;">> \
> or could</p> <p \
style="margin-top:0;margin-bottom:0;margin-left:0;margin-right:0;">> \
> that be replaced by json metadata based plugin loading as well?</p> <p \
style="margin-top:0;margin-bottom:0;margin-left:0;margin-right:0;">> \
</p> <p style="margin-top:0;margin-bottom:0;margin-left:0;margin-right:0;">> \
Err, that's an orthogonal question.</p> <br /><br /><p \
style="margin-top:0;margin-bottom:0;margin-left:0;margin-right:0;">That was \
meant regarding <a href="https://invent.kde.org/frameworks/kio/-/blob/master \
/src/kioslave/kioslave.cpp#L73">https://invent.kde.org/frameworks/kio/-/blob/master/src/kioslave/kioslave.cpp#L73</a>, \
similar to <a href="https://phabricator.kde.org/T13808">https://phabricator.kde.org/T13808</a>.</p>
<br /><p style="margin-top:0;margin-bottom:0;margin-left:0;margin-right:0;">But \
because SlaveBase is not a QObject we could not do this during KF5 \
times easily. It was just an idea :)</p> <br /><p \
style="margin-top:0;margin-bottom:0;margin-left:0;margin-right:0;">> \
</p> <p style="margin-top:0;margin-bottom:0;margin-left:0;margin-right:0;">> \
When not going via klauncher/kinit, the app first launches the \
kioslave5</p> <p style="margin-top:0;margin-bottom:0;margin-left:0;margin-right:0;">> \
process, which then loads the .so with the kio worker plugin. As you \
can</p> <p style="margin-top:0;margin-bottom:0;margin-left:0;margin-right:0;">> \
see from your process list:</p> <p \
style="margin-top:0;margin-bottom:0;margin-left:0;margin-right:0;">> \
</p> <p style="margin-top:0;margin-bottom:0;margin-left:0;margin-right:0;">> \
PREFIX/lib64/libexec/kf5/kioslave5 PREFIX/lib64/plugins/kf5/kio/file.so \
file</p> <p style="margin-top:0;margin-bottom:0;margin-left:0;margin-right:0;">> \
local:/run/user/1000/kded5ymjnPa.3.slave-socket</p> <p \
style="margin-top:0;margin-bottom:0;margin-left:0;margin-right:0;">> \
</p> <p style="margin-top:0;margin-bottom:0;margin-left:0;margin-right:0;">> \
That .so is determined by slave.cpp using</p> <p \
style="margin-top:0;margin-bottom:0;margin-left:0;margin-right:0;">> \
QString lib_path = KPluginLoader::findPlugin(_name);</p> <p \
style="margin-top:0;margin-bottom:0;margin-left:0;margin-right:0;">> \
which I believe means it finds the plugin by filename, no .protocol \
file</p> <p style="margin-top:0;margin-bottom:0;margin-left:0;margin-right:0;">> \
needed and no json metadata needed, right?</p> <p \
style="margin-top:0;margin-bottom:0;margin-left:0;margin-right:0;">> \
</p> <p style="margin-top:0;margin-bottom:0;margin-left:0;margin-right:0;">> \
> - is the performance benefit of kinit still relevant there?</p> <p \
style="margin-top:0;margin-bottom:0;margin-left:0;margin-right:0;">> \
</p> <p style="margin-top:0;margin-bottom:0;margin-left:0;margin-right:0;">> \
We decided it wasn't. For KIO workers it was never measured anyway.</p> <p \
style="margin-top:0;margin-bottom:0;margin-left:0;margin-right:0;">> \
</p> <p style="margin-top:0;margin-bottom:0;margin-left:0;margin-right:0;">> \
> - for in-process KIO that would be needed anyway</p> <p \
style="margin-top:0;margin-bottom:0;margin-left:0;margin-right:0;">> \
</p> <p style="margin-top:0;margin-bottom:0;margin-left:0;margin-right:0;">> \
That would remove the separate process (kioslave5) from the equation</p> <p \
style="margin-top:0;margin-bottom:0;margin-left:0;margin-right:0;">> but \
that's unrelated to plugin loading.</p> <br /><br /><p \
style="margin-top:0;margin-bottom:0;margin-left:0;margin-right:0;">Regards</p>
<p style="margin-top:0;margin-bottom:0;margin-left:0;margin-right:0;">Alex</p>
<br /></body>
</html>
[prev in list] [next in list] [prev in thread] [next in thread]
Configure |
About |
News |
Add a list |
Sponsored by KoreLogic