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)
Dec 20 2023, 2:35 AM
Unknown Object (File)
Dec 19 2023, 9:28 AM
Unknown Object (File)
Oct 28 2023, 9:53 AM
Unknown Object (File)
Jul 24 2023, 10:36 PM
Unknown Object (File)
Jul 5 2023, 6:47 PM
Unknown Object (File)
Jun 16 2023, 9:04 PM
Unknown Object (File)
May 20 2023, 7:03 PM
Unknown Object (File)
Apr 25 2023, 7:56 PM
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