<div dir="ltr">:)</div><div class="gmail_extra"><br><br><div class="gmail_quote">2014-07-10 2:40 GMT+08:00 Maxim Dounin <span dir="ltr"><<a href="mailto:mdounin@mdounin.ru" target="_blank">mdounin@mdounin.ru</a>></span>:<br>
<blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">Hello!<br>
<div><div class="h5"><br>
On Wed, Jun 18, 2014 at 05:00:14PM +0800, Jianjun Zheng wrote:<br>
<br>
> At present, alloting memory with size of ngx_slab_max_size causes<br>
><br>
> 1) an internal fragmentation, size of ngx_slab_max_size, comes into being<br>
><br>
> 2) the slot with index of (ngx_pagesize_shift - pool->min_shift - 1)<br>
>     is the right slot for this size.<br>
><br>
><br>
> # HG changeset patch<br>
> # User Jianjun Zheng <<a href="mailto:codeeply@gmail.com">codeeply@gmail.com</a>><br>
> # Date 1403080799 -28800<br>
> #      Wed Jun 18 16:39:59 2014 +0800<br>
> # Node ID 1704335dd810e2e2abb2b393b4f7b7c9004c6012<br>
> # Parent  ec919574cc14f7781c0ca212cffec586f88eec40<br>
> Core: bugfix for the ngx_slab_max_size case<br>
><br>
> diff -r ec919574cc14 -r 1704335dd810 src/core/ngx_slab.c<br>
> --- a/src/core/ngx_slab.c Tue Jun 17 16:51:25 2014 +0400<br>
> +++ b/src/core/ngx_slab.c Wed Jun 18 16:39:59 2014 +0800<br>
> @@ -160,7 +160,7 @@<br>
>      ngx_uint_t        i, slot, shift, map;<br>
>      ngx_slab_page_t  *page, *prev, *slots;<br>
><br>
> -    if (size >= ngx_slab_max_size) {<br>
> +    if (size > ngx_slab_max_size) {<br>
><br>
>          ngx_log_debug1(NGX_LOG_DEBUG_ALLOC, ngx_cycle->log, 0,<br>
>                         "slab alloc: %uz", size);<br>
<br>
</div></div>Sorry for late reply.<br>
<br>
Yes, the patch is right, allocation of ngx_slab_max_size exactly<br>
(aka half page, 2048 bytes on platforms with 4k pages) can be<br>
satisfied from the largest slot and don't need the whole page to<br>
be allocated.  While it's a corner case, it's certainly can be<br>
important in some cases and worth fixing.<br>
<br>
Committed, thanks.<br>
<span class="HOEnZb"><font color="#888888"><br>
--<br>
Maxim Dounin<br>
<a href="http://nginx.org/" target="_blank">http://nginx.org/</a><br>
<br>
_______________________________________________<br>
nginx-devel mailing list<br>
<a href="mailto:nginx-devel@nginx.org">nginx-devel@nginx.org</a><br>
<a href="http://mailman.nginx.org/mailman/listinfo/nginx-devel" target="_blank">http://mailman.nginx.org/mailman/listinfo/nginx-devel</a><br>
</font></span></blockquote></div><br></div>