On 09/25/2013 04:14 PM, Srivatsa S. Bhat wrote:
> @@ -605,16 +713,22 @@ static inline void __free_one_page(struct page *page,
>               buddy_idx = __find_buddy_index(combined_idx, order + 1);
>               higher_buddy = higher_page + (buddy_idx - combined_idx);
>               if (page_is_buddy(higher_page, higher_buddy, order + 1)) {
> -                     list_add_tail(&page->lru,
> -                             
> &zone->free_area[order].free_list[migratetype].list);
> +
> +                     /*
> +                      * Implementing an add_to_freelist_tail() won't be
> +                      * very useful because both of them (almost) add to
> +                      * the tail within the region. So we could potentially
> +                      * switch off this entire "is next-higher buddy free?"
> +                      * logic when memory regions are used.
> +                      */
> +                     add_to_freelist(page, &area->free_list[migratetype]);
>                       goto out;
>               }
>       }

Commit 6dda9d55b says that this had some discrete performance gains.
It's a bummer that this deoptimizes it, and I think that (expected)
performance degredation at least needs to be referenced _somewhere_.

I also find it very hard to take code seriously which stuff like this:

> +#ifdef CONFIG_DEBUG_PAGEALLOC
> +             WARN(region->nr_free == 0, "%s: nr_free messed up\n", __func__);
> +#endif

nine times.
--
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to majord...@vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html
Please read the FAQ at  http://www.tux.org/lkml/

Reply via email to