@@ -83,6 +83,7 @@ struct page_pool_stats {
struct {
u64 fast; /* fast path allocations */
u64 slow; /* slow-path order-0 allocations */
+ u64 slow_high_order; /* slow-path high order allocations */
} alloc;
};
@@ -206,6 +207,11 @@ static inline u64 page_pool_stats_get_slow(struct page_pool *pool)
{
return pool->ps.alloc.slow;
}
+
+static inline u64 page_pool_stats_get_slow_high_order(struct page_pool *pool)
+{
+ return pool->ps.alloc.slow_high_order;
+}
#else
static inline void page_pool_destroy(struct page_pool *pool)
{
@@ -235,6 +241,11 @@ static inline u64 page_pool_stats_get_slow(struct page_pool *pool)
{
return 0;
}
+
+static inline u64 page_pool_stats_get_slow_high_order(struct page_pool *pool)
+{
+ return 0;
+}
#endif
void page_pool_put_page(struct page_pool *pool, struct page *page,
@@ -240,6 +240,7 @@ static struct page *__page_pool_alloc_page_order(struct page_pool *pool,
return NULL;
}
+ pool->ps.alloc.slow_high_order++;
page_pool_set_pp_info(pool, page);
/* Track how many pages are held 'in-flight' */
Add a stat to track high order allocations in the slow path. A static inline function is exposed for accessing this stat. Signed-off-by: Joe Damato <jdamato@fastly.com> --- include/net/page_pool.h | 11 +++++++++++ net/core/page_pool.c | 1 + 2 files changed, 12 insertions(+)