Page MenuHomeFreeBSD

Add some counters for per-page queue operations.
ClosedPublic

Authored by markj on Sep 24 2019, 4:28 PM.
Tags
None
Referenced Files
Unknown Object (File)
Mon, Jan 6, 3:35 PM
Unknown Object (File)
Dec 11 2024, 4:56 PM
Unknown Object (File)
Nov 14 2024, 4:47 PM
Unknown Object (File)
Nov 4 2024, 1:53 PM
Unknown Object (File)
Oct 9 2024, 1:06 PM
Unknown Object (File)
Sep 30 2024, 11:21 PM
Unknown Object (File)
Sep 28 2024, 8:27 PM
Unknown Object (File)
Sep 26 2024, 3:53 AM
Subscribers

Details

Summary

This is a counterpart to the counters we have in vm_object.c. For now,
add counters for queue operations: the number of dequeues and requeues
(queue_ops), and the number of batch entries which resulted in no queue
updates (queue_nops). A NOP occurs when the page's queue state has been
updated between the batch enqueue and completion. This occurs most
often when vm_page_free_prep() begins a batched dequeue and the page is
fully dequeued by vm_page_alloc() before the batch entry is processed.
This can happen easily with page allocated from the UMA cache, which is
LIFO.

Test Plan

After bootup and a kernel build I have:

markj@biggie> sysctl vm.stats.page
vm.stats.page.queue_nops: 98184
vm.stats.page.queue_ops: 23363542

In some workloads the ratio nops/ops can be significantly
larger. These are targets for optimization, since a high ratio
implies that we are taking the page queue locks more often
than necessary.

Diff Detail

Repository
rS FreeBSD src repository - subversion
Lint
Lint Not Applicable
Unit
Tests Not Applicable