Thanks Sergey,

the patch works great so far. I tested the file example with your patch 
applied and, as predicted, the CPU instruction count went down by about 
60%. CPU load as shown by top also decreased by about the same factor and 
download speed has increased, especially with multiple parallel downloads. 
2 parallel downloads have the same total transfer rate as a single 
download, without the patch it decreased rapidly, limited by the CPU usage.

An analysis with callgrind now shows FD_* macros as the biggest impact on 
CPU load, and i don't think, there's a way to save anything there.


Am Freitag, 19. September 2014 23:57:17 UTC+2 schrieb Sergey Lyubka:
>
> Thanks Macel.
> Could you try on attached patch please?
>
>
>
> On Thu, Sep 18, 2014 at 12:19 PM, Marcel Wirtz <[email protected] 
> <javascript:>> wrote:
>
>> The problem is definetly not IO related (And no other software I know has 
>> such a high CPU load transferring data from a file to a socket).
>>
>> A short analysis of the problem:
>>
>> in transfer_file_data() read is called to read data from the file to a 
>> buffer (0.29% of the total CPU instructions). Then ns_send() is called. 
>> Here the buffer is copied to another buffer (59.27% CPU instructions in 
>> memcpy). send() is called by ns_write_to_socket() and uses 0.49% of the CPU 
>> instructions. So the real problem is not reading from the file or writing 
>> to the socket, but the internal copy of the buffer in ns_send(). If there 
>> would be a way not to copy every byte of the file internaly before sending, 
>> the CPU load should be smaller (about 60%, which would be better by far). 
>>
>> Am Mittwoch, 17. September 2014 09:54:11 UTC+2 schrieb Sergey Lyubka:
>>>
>>> Well if that is memcpy, then I don't find it surprising.
>>> Server is mostly doing data copying, reading from file and copying to 
>>> the socket.
>>>
>>>
>>>
>>> On Sat, Sep 13, 2014 at 12:11 PM, Marcel Wirtz <[email protected]> wrote:
>>>
>>>> Yes
>>>>
>>>> --
>>>> You received this message because you are subscribed to the Google 
>>>> Groups "mongoose-users" group.
>>>> To unsubscribe from this group and stop receiving emails from it, send 
>>>> an email to [email protected].
>>>> To post to this group, send email to [email protected].
>>>> Visit this group at http://groups.google.com/group/mongoose-users.
>>>> For more options, visit https://groups.google.com/d/optout.
>>>>
>>>
>>>  -- 
>> You received this message because you are subscribed to the Google Groups 
>> "mongoose-users" group.
>> To unsubscribe from this group and stop receiving emails from it, send an 
>> email to [email protected] <javascript:>.
>> To post to this group, send email to [email protected] 
>> <javascript:>.
>> Visit this group at http://groups.google.com/group/mongoose-users.
>> For more options, visit https://groups.google.com/d/optout.
>>
>
>

-- 
You received this message because you are subscribed to the Google Groups 
"mongoose-users" group.
To unsubscribe from this group and stop receiving emails from it, send an email 
to [email protected].
To post to this group, send email to [email protected].
Visit this group at http://groups.google.com/group/mongoose-users.
For more options, visit https://groups.google.com/d/optout.

Reply via email to