[Webkit-unassigned] [Bug 132229] Coalesce responses on network process side

bugzilla-daemon at webkit.org bugzilla-daemon at webkit.org
Tue Apr 29 15:25:06 PDT 2014


https://bugs.webkit.org/show_bug.cgi?id=132229





--- Comment #19 from Antti Koivisto <koivisto at iki.fi>  2014-04-29 15:25:26 PST ---
> I find this explanation implausible. There must be something else at play.

For example the network process side profiles for sending messages (over PLT run) look like this:

Running Time    Self        Symbol Name
501.0ms    6.0%    1,0                          bool IPC::Connection::send<Messages::WebResourceLoader::DidReceiveResponseWithCertificateInfo>(Messages::WebResourceLoader::DidReceiveResponseWithCertificateInfo&&, unsigned long long, unsigned int)
425.0ms    5.1%    1,0                           IPC::ArgumentCoder<WebCore::ResourceResponse>::encode(IPC::ArgumentEncoder&, WebCore::ResourceResponse const&)
66.0ms    0.7%    1,0                           IPC::Connection::sendMessage(std::__1::unique_ptr<IPC::MessageEncoder, std::__1::default_delete<IPC::MessageEncoder> >, unsigned int)

Running Time    Self        Symbol Name
306.0ms    3.6%    0,0                          bool IPC::Connection::send<Messages::WebResourceLoader::DidReceiveData>(Messages::WebResourceLoader::DidReceiveData&&, unsigned long long, unsigned int)
229.0ms    2.7%    0,0                           IPC::ArgumentEncoder::encodeVariableLengthByteArray(IPC::DataReference const&)
67.0ms    0.8%    3,0                           IPC::Connection::sendMessage(std::__1::unique_ptr<IPC::MessageEncoder, std::__1::default_delete<IPC::MessageEncoder> >, unsigned int)

Running Time    Self        Symbol Name
63.0ms    0.7%    1,0                        bool IPC::MessageSender::send<Messages::WebResourceLoader::DidFinishResourceLoad>(Messages::WebResourceLoader::DidFinishResourceLoad const&, unsigned long long, unsigned int)
58.0ms    0.7%    1,0                         IPC::MessageSender::sendMessage(std::__1::unique_ptr<IPC::MessageEncoder, std::__1::default_delete<IPC::MessageEncoder> >, unsigned int)
54.0ms    0.6%    1,0                          IPC::Connection::sendMessage(std::__1::unique_ptr<IPC::MessageEncoder, std::__1::default_delete<IPC::MessageEncoder> >, unsigned int)
2.0ms    0.0%    2,0                          non-virtual thunk to WebKit::NetworkResourceLoader::messageSenderConnection()
1.0ms    0.0%    1,0                          DYLD-STUB$$operator new(unsigned long)

Simply combining sendMessage calls (practically all combine) wins 1.5% of main thread time. A portion of encodeVariableLengthByteArray overhead (2.7%) will go away as well as we now do do a single encode per resource instead of multiple ones.

There are comparable wins in receiving web process side. Does this make it sound more plausible? These things are not free.

-- 
Configure bugmail: https://bugs.webkit.org/userprefs.cgi?tab=email
------- You are receiving this mail because: -------
You are the assignee for the bug.



More information about the webkit-unassigned mailing list