Buy commercial curl support from WolfSSL. We help you work
out your issues, debug your libcurl applications, use the API, port to new
platforms, add new features and more. With a team lead by the curl founder
himself.
Re: curl-multi-socket interface too slow
- Contemporary messages sorted: [ by date ] [ by thread ] [ by subject ] [ by author ] [ by messages with attachments ]
From: Aleh Linkin via curl-library <curl-library_at_lists.haxx.se>
Date: Wed, 1 Jun 2022 16:22:43 +0300
Thanks for the update. Could you be a bit more specific? What do you mean
under "problem with the TCP/IP stack"? If I'd like to use
curl_multi_socket_action I had to sacrifice some CPU?
On Wed, Jun 1, 2022 at 4:04 PM James Read <jamesread5737_at_gmail.com> wrote:
> The problem is not with cURL. I have also run into these problems using
> cURL. I recoded using sockets and epoll and got the same results. The
> problem is with the TCP/IP stack.
>
> On Wed, Jun 1, 2022 at 1:46 PM Aleh Linkin via curl-library <
> curl-library_at_lists.haxx.se> wrote:
>
>> 1. easy_handles
>> ```
>> SET_OPT(CURLOPT_ERRORBUFFER, m_errorBuffer);
>> setVerbose(true);
>> setUrl(url);
>> setTimeout(timeout);
>> setConnectTimeout(connectTimeout);
>> setProxy(proxy);
>> setProxyPort(proxyPort);
>> setHttpHeaders(httpHeaders);
>> SET_OPT(CURLOPT_WRITEFUNCTION, writeFunction);
>> SET_OPT(CURLOPT_WRITEDATA, m_requestState);
>> SET_OPT(CURLOPT_DEBUGFUNCTION, CurlRequest::debugFunction);
>> SET_OPT(CURLOPT_DEBUGDATA, this);
>> SET_OPT(CURLOPT_PRIVATE, this);
>> SET_OPT(CURLOPT_NOSIGNAL, 1L);
>> ```
>>
>> 2. HTTPS. TLS based on NSS SSL backend
>>
>> 3. Yes. I've used perf and valgrind-cachgrind but I can't take the reason
>> from results. For example perf part:
>> ```
>> Samples: 1K of event 'cycles:uppp', Event count (approx.): 9397031894
>> Children Self Command Shared Object Symbol
>> - 23.25% 2.43% lecappqry.1 [unknown] [.]
>> 0000000000000000
>> - 21.58% 0
>> 5.29% _int_malloc
>> 1.42% free
>> 1.13% Curl_http
>> 1.07% _int_free
>> + 0.88% __clock_gettime
>> 0.72% _IO_vsnprintf
>> 0.71% __libc_calloc
>> + 5.07% 0.00% lecappqry.1 [unknown] [k]
>> 0x0000000000667849
>> + 5.07% 0.00% lecappqry.1 [unknown] [k]
>> 0x00007f33507ad900
>> + 5.07% 4.87% lecappqry.1 lecappqry_grpc [.]
>> dprintf_formatf
>> + 4.88% 4.71% lecappqry.1 libc-2.17.so [.] _int_free ```
>>
>> On Mon, May 30, 2022 at 9:07 PM Patrick Schlangen <patrick_at_schlangen.me>
>> wrote:
>>
>>> Am 30.05.2022 um 16:23 schrieb Aleh Linkin via curl-library <
>>> curl-library_at_lists.haxx.se>:
>>> >
>>> > I understand. Thank you.
>>> > But why multi_socket_action eats about twice time more CPU then
>>> curl_multi_perform called in cycle with 10ms pause?
>>>
>>> Can you supply some more details about how the easy handle is configured
>>> and the type of transfers you are running? Is it HTTP? Are you using TLS?
>>> Did you use perf or a similar profiler yet to see where time is spent?
>>>
>>> Thanks,
>>>
>>> Patrick
>>>
>>> --
>> Unsubscribe: https://lists.haxx.se/listinfo/curl-library
>> Etiquette: https://curl.haxx.se/mail/etiquette.html
>>
>
Date: Wed, 1 Jun 2022 16:22:43 +0300
Thanks for the update. Could you be a bit more specific? What do you mean
under "problem with the TCP/IP stack"? If I'd like to use
curl_multi_socket_action I had to sacrifice some CPU?
On Wed, Jun 1, 2022 at 4:04 PM James Read <jamesread5737_at_gmail.com> wrote:
> The problem is not with cURL. I have also run into these problems using
> cURL. I recoded using sockets and epoll and got the same results. The
> problem is with the TCP/IP stack.
>
> On Wed, Jun 1, 2022 at 1:46 PM Aleh Linkin via curl-library <
> curl-library_at_lists.haxx.se> wrote:
>
>> 1. easy_handles
>> ```
>> SET_OPT(CURLOPT_ERRORBUFFER, m_errorBuffer);
>> setVerbose(true);
>> setUrl(url);
>> setTimeout(timeout);
>> setConnectTimeout(connectTimeout);
>> setProxy(proxy);
>> setProxyPort(proxyPort);
>> setHttpHeaders(httpHeaders);
>> SET_OPT(CURLOPT_WRITEFUNCTION, writeFunction);
>> SET_OPT(CURLOPT_WRITEDATA, m_requestState);
>> SET_OPT(CURLOPT_DEBUGFUNCTION, CurlRequest::debugFunction);
>> SET_OPT(CURLOPT_DEBUGDATA, this);
>> SET_OPT(CURLOPT_PRIVATE, this);
>> SET_OPT(CURLOPT_NOSIGNAL, 1L);
>> ```
>>
>> 2. HTTPS. TLS based on NSS SSL backend
>>
>> 3. Yes. I've used perf and valgrind-cachgrind but I can't take the reason
>> from results. For example perf part:
>> ```
>> Samples: 1K of event 'cycles:uppp', Event count (approx.): 9397031894
>> Children Self Command Shared Object Symbol
>> - 23.25% 2.43% lecappqry.1 [unknown] [.]
>> 0000000000000000
>> - 21.58% 0
>> 5.29% _int_malloc
>> 1.42% free
>> 1.13% Curl_http
>> 1.07% _int_free
>> + 0.88% __clock_gettime
>> 0.72% _IO_vsnprintf
>> 0.71% __libc_calloc
>> + 5.07% 0.00% lecappqry.1 [unknown] [k]
>> 0x0000000000667849
>> + 5.07% 0.00% lecappqry.1 [unknown] [k]
>> 0x00007f33507ad900
>> + 5.07% 4.87% lecappqry.1 lecappqry_grpc [.]
>> dprintf_formatf
>> + 4.88% 4.71% lecappqry.1 libc-2.17.so [.] _int_free ```
>>
>> On Mon, May 30, 2022 at 9:07 PM Patrick Schlangen <patrick_at_schlangen.me>
>> wrote:
>>
>>> Am 30.05.2022 um 16:23 schrieb Aleh Linkin via curl-library <
>>> curl-library_at_lists.haxx.se>:
>>> >
>>> > I understand. Thank you.
>>> > But why multi_socket_action eats about twice time more CPU then
>>> curl_multi_perform called in cycle with 10ms pause?
>>>
>>> Can you supply some more details about how the easy handle is configured
>>> and the type of transfers you are running? Is it HTTP? Are you using TLS?
>>> Did you use perf or a similar profiler yet to see where time is spent?
>>>
>>> Thanks,
>>>
>>> Patrick
>>>
>>> --
>> Unsubscribe: https://lists.haxx.se/listinfo/curl-library
>> Etiquette: https://curl.haxx.se/mail/etiquette.html
>>
>
-- Unsubscribe: https://lists.haxx.se/listinfo/curl-library Etiquette: https://curl.haxx.se/mail/etiquette.htmlReceived on 2022-06-01