[ 
https://issues.apache.org/jira/browse/PROTON-2229?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=17218386#comment-17218386
 ] 

Ketrab CM commented on PROTON-2229:
-----------------------------------

I met the same issue. I send messages with quite large binary content (10mb).  
Function *pni_data_intern* adds extra *"\0"* into the buf and because capacity 
is equal to payload, proton resises buf and starts costly performance functions 
*pn_buffer_derag* / *pn_buffer_rotate*. 
I changed *pni_data_intern_node* to initialize buf with +1 extra byte (needed 
later for "\0")
{code:java}
data->buf = pn_buffer(bytes->size + 1) {code}
and looks like it helps a lot.

> pn_data_t initialization lead to low performance
> ------------------------------------------------
>
>                 Key: PROTON-2229
>                 URL: https://issues.apache.org/jira/browse/PROTON-2229
>             Project: Qpid Proton
>          Issue Type: Bug
>          Components: proton-c
>    Affects Versions: proton-c-0.30.0
>         Environment: x86_64 GNU/Linux
>            Reporter: wanfa deng
>            Assignee: Andrew Stitcher
>            Priority: Major
>              Labels: initialization, perf
>   Original Estimate: 5h
>  Remaining Estimate: 5h
>
> Recently I update qpid-proton from 0.28.0 to 0.30.0 version, and find massive 
> produce performance fallen by 80%。
> Finally,I find this is caused by pn_data_t initialization。 In 0.28.0 version, 
> it's like 
> data->buf = pn_buffer(64);
> and in In 0.30.0 version, it's like 
> data->buf = NULL;
>  
> And when data->buf is initialized by NULL,  in the following call flow, 
> pn_data_put_binary->pni_data_intern_node->pn_buffer_memory->pn_buffer_defrag->pn_buffer_rotate,
>  
> buf->start is more likely not equal to 0, this is leading to buffer rotate, 
> and make the performance lower.



--
This message was sent by Atlassian Jira
(v8.3.4#803005)

---------------------------------------------------------------------
To unsubscribe, e-mail: [email protected]
For additional commands, e-mail: [email protected]

Reply via email to