Page MenuHomeFreeBSD

Export some UMA info via sysctl.
ClosedPublic

Authored by markj on Jun 4 2019, 3:31 PM.
Tags
None
Referenced Files
F81687180: D20514.id58243.diff
Fri, Apr 19, 11:00 PM
Unknown Object (File)
Fri, Apr 19, 7:30 AM
Unknown Object (File)
Thu, Apr 18, 11:35 PM
Unknown Object (File)
Mon, Apr 8, 4:53 AM
Unknown Object (File)
Feb 23 2024, 10:12 PM
Unknown Object (File)
Feb 21 2024, 3:11 AM
Unknown Object (File)
Dec 26 2023, 4:17 PM
Unknown Object (File)
Dec 23 2023, 3:31 AM
Subscribers

Details

Summary

These show the total amount of memory used for UMA slabs, and the limit
on such memory.

Diff Detail

Lint
Lint Passed
Unit
No Test Coverage
Build Status
Buildable 24679
Build 23448: arc lint + arc unit

Event Timeline

sys/vm/uma_core.c
148

Is uma_kmem_limit also something that ought to be accessed and modified atomically?

151

Consider making the initial value of 0 explicit here.

sys/vm/uma_core.c
3813

Why do you need this atomic ? Esp. since sysctl handler would not use volatile qualification.

sys/vm/uma_core.c
148

I don't think it's necessary: currently it's set only once, during boot time.

151

Hmm, conventionally we omit the explicit zero-initialization when the variable is initialized later (early during boot in this case). For, e.g., a sysctl setting where 0 means off (default) and 1 means on, I would use an explicit initializer of 0.

3813

I did it because I removed the volatile qualifier from the var. All of its other accesses are via atomic_* so I prefer to be consistent here.

sys/vm/uma_core.c
148

Because uma_set_limit is called only once, during boot time. Maybe a comment somewhere should explain that.

So why initialize to LONG_MAX? Why not just

static unslgned long uma_kmem_limit; /* initialized by uma_set_limit(). */

sys/vm/uma_core.c
148

I will add a comment.

We initialize to LONG_MAX so that UMA allocations can succeed before uma_set_limit() is called. If it were initialized to zero, such allocations would always fail because uma_avail() would return zero.

kib added inline comments.
sys/vm/uma_core.c
3813

As I noted, sysctl would not access it as volatile.

This revision is now accepted and ready to land.Jun 4 2019, 4:59 PM
sys/vm/uma_core.c
3813

Sorry, I see. The change is indeed unrelated to my original purpose of adding sysctls. I will commit that part separately.

Add a comment for uma_kmem_limit.

This revision now requires review to proceed.Jun 4 2019, 7:35 PM
markj marked an inline comment as done.Jun 4 2019, 7:37 PM
markj added inline comments.
sys/vm/uma_core.c
148

Sorry, I misremembered. The allocations won't fail, but we'll erroneously wake up the UMA reclaim thread. See r327485.

This revision is now accepted and ready to land.Jun 4 2019, 7:37 PM
This revision was automatically updated to reflect the committed changes.