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.
Details
Details
- Reviewers
alc kib jeff - Commits
- rS352690: Add some counters for per-VM page events.
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
Diff Detail
- Repository
- rS FreeBSD src repository - subversion
- Lint
Lint Not Applicable - Unit
Tests Not Applicable