Checks there can be prohibitively expensive, for example when using ipsec one can get 90% packet loss while trying to push 2 Mbit/s, all while CPUs are executing this function.
Details
Details
Diff Detail
Diff Detail
- Repository
- rG FreeBSD src repository
- Lint
Lint Not Applicable - Unit
Tests Not Applicable
Event Timeline
Comment Actions
I guess this is ok, but using DIAGNOSTIC and expecting performance seems counter-intuitive. My understanding is that DIAGNOSTIC is only for expensive checks when debugging an issue and not something to use normally (certainly not in a production environment).
Comment Actions
While DIAGNOSTIC is supposed to be for heavyweight checks, it's hard to find the right balance. There are some checks that are simply too expensive to enable outside of targeted debugging. We disable vmem_check() by default with DIAGNOSTIC, and we don't do full vm_map validation (enable_vmmap_check) even with DIAGNOSTIC enabled. In general these O(n) scans just make the system unusable. Things like the check in vm_page_free_prep() are more reasonable.