#
59e0001f |
| 23-Sep-2023 |
ad <ad@NetBSD.org> |
Repply this change with a couple of bugs fixed:
- Do away with separate pool_cache for some kernel objects that have no special requirements and use the general purpose allocator instead. On one o
Repply this change with a couple of bugs fixed:
- Do away with separate pool_cache for some kernel objects that have no special requirements and use the general purpose allocator instead. On one of my test systems this makes for a small (~1%) but repeatable reduction in system time during builds presumably because it decreases the kernel's cache / memory bandwidth footprint a little. - vfs_lockf: cache a pointer to the uidinfo and put mutex in the data segment.
show more ...
|
#
ef0f79c8 |
| 12-Sep-2023 |
ad <ad@NetBSD.org> |
Back out recent change to replace pool_cache with then general allocator. Will return to this when I have time again.
|
#
cbcf86cb |
| 10-Sep-2023 |
ad <ad@NetBSD.org> |
- Do away with separate pool_cache for some kernel objects that have no special requirements and use the general purpose allocator instead. On one of my test systems this makes for a small (~1%)
- Do away with separate pool_cache for some kernel objects that have no special requirements and use the general purpose allocator instead. On one of my test systems this makes for a small (~1%) but repeatable reduction in system time during builds presumably because it decreases the kernel's cache / memory bandwidth footprint a little. - vfs_lockf: cache a pointer to the uidinfo and put mutex in the data segment.
show more ...
|
#
f595094c |
| 17-Jul-2023 |
riastradh <riastradh@NetBSD.org> |
uvm(9): One rndsource for faults -- not one per CPU.
All relevant state is per-CPU anyway; the only substantive difference this makes is how many entries appear in `rndctl -l' output and what they a
uvm(9): One rndsource for faults -- not one per CPU.
All relevant state is per-CPU anyway; the only substantive difference this makes is how many entries appear in `rndctl -l' output and what they are called -- formerly the somewhat confusing `cpuN', meaning `page faults on cpuN', and now just `uvmfault'. I don't think there's any real value in being able to enable or disable measurement or counting of page faults on one CPU vs others, so although this could be a minor compatibility change, it's hard to imagine it matters much.
XXX kernel ABI change in struct cpu_info
show more ...
|
#
9133d44e |
| 04-Nov-2020 |
chs <chs@NetBSD.org> |
In uvmpd_tryownerlock(), if the initial try-lock of the owner lock fails then rather than do more try-locks and eventually sleep for a tick, take a hold on the current owner's lock, drop the page int
In uvmpd_tryownerlock(), if the initial try-lock of the owner lock fails then rather than do more try-locks and eventually sleep for a tick, take a hold on the current owner's lock, drop the page interlock, and acquire the lock that we took the hold on in a blocking fashion. After we get the lock, check if the lock that we acquired is still the lock for the owner of the page that we're interested in. If the owner hasn't changed then can proceed with this page, otherwise we will skip this page and move on to a different page. This dramatically reduces the amount of time that the pagedaemon sleeps trying to get locks, since even 1 tick is an eternity to sleep in this context and it was easy to trigger that case in practice, and with this new method the pagedaemon only very rarely actually blocks to acquire the lock that it wants since the object locks are adaptive, and when the pagedaemon does block then the amount of time it spends sleeping will be generally be much less than 1 tick.
show more ...
|
#
27a227d5 |
| 07-Oct-2020 |
chs <chs@NetBSD.org> |
Add a new, more aggressive allocator for uvm_pglistalloc() to allocate contiguous physical pages, and try this new allocator if the existing one fails. The existing contig allocator only tries to al
Add a new, more aggressive allocator for uvm_pglistalloc() to allocate contiguous physical pages, and try this new allocator if the existing one fails. The existing contig allocator only tries to allocate pages that are already free, which works fine shortly after boot but rarely works after the system has been up for a while. The new allocator uses the pagedaemon to evict pages from memory in the hope that this will free up a range of pages that satisfies the constraits of the request. This should help with things like plugging in a USB device, which often fails for some USB controllers because they can't get contigous memory.
show more ...
|
#
9d7e3f37 |
| 06-Mar-2020 |
ad <ad@NetBSD.org> |
Fix a comment.
|
#
9b1e2fa2 |
| 27-Dec-2019 |
ad <ad@NetBSD.org> |
Redo the page allocator to perform better, especially on multi-core and multi-socket systems. Proposed on tech-kern. While here:
- add rudimentary NUMA support - needs more work. - remove now unus
Redo the page allocator to perform better, especially on multi-core and multi-socket systems. Proposed on tech-kern. While here:
- add rudimentary NUMA support - needs more work. - remove now unused "listq" from vm_page.
show more ...
|
#
5978ddc6 |
| 13-Dec-2019 |
ad <ad@NetBSD.org> |
Break the global uvm_pageqlock into a per-page identity lock and a private lock for use of the pagedaemon policy code. Discussed on tech-kern.
PR kern/54209: NetBSD 8 large memory performance extre
Break the global uvm_pageqlock into a per-page identity lock and a private lock for use of the pagedaemon policy code. Discussed on tech-kern.
PR kern/54209: NetBSD 8 large memory performance extremely low PR kern/54210: NetBSD-8 processes presumably not exiting PR kern/54727: writing a large file causes unreasonable system behaviour
show more ...
|
#
6e176d24 |
| 01-Dec-2019 |
ad <ad@NetBSD.org> |
Give each of the page queue locks their own cache line.
|
#
482e5d89 |
| 19-May-2018 |
jdolecek <jdolecek@NetBSD.org> |
Remove emap support. Unfortunately it never got to state where it would be used and usable, due to reliability and limited & complicated MD support.
Going forward, we need to concentrate on interfac
Remove emap support. Unfortunately it never got to state where it would be used and usable, due to reliability and limited & complicated MD support.
Going forward, we need to concentrate on interface which do not map anything into kernel in first place (such as direct map or KVA-less I/O), rather than making those mappings cheaper to do.
show more ...
|
#
3b1622fa |
| 23-Dec-2016 |
cherry <cherry@NetBSD.org> |
"Make NetBSD great again!"
Introduce uvm_hotplug(9) to the kernel.
Many thanks, in no particular order to:
TNF, for funding the project.
Chuck Silvers - for multiple API reviews and feedback. Nic
"Make NetBSD great again!"
Introduce uvm_hotplug(9) to the kernel.
Many thanks, in no particular order to:
TNF, for funding the project.
Chuck Silvers - for multiple API reviews and feedback. Nick Hudson - for testing on multiple architectures and bugfix patches. Everyone who helped with boot testing.
KeK (http://www.kek.org.in) for hosting the primary developers.
show more ...
|
#
d916fc67 |
| 22-Dec-2016 |
cherry <cherry@NetBSD.org> |
Add a new function called uvm_md_init() that can be called at the appropriate time in the boot path by MD code.
|
#
369827c1 |
| 03-Apr-2015 |
riastradh <riastradh@NetBSD.org> |
Initialize P->V tracking for unmanaged device pages in uvm_init.
Conditional on __HAVE_PMAP_PV_TRACK until we add it to all pmaps.
MI part of pmap_pv(9) change proposed on tech-kern:
https://mail-
Initialize P->V tracking for unmanaged device pages in uvm_init.
Conditional on __HAVE_PMAP_PV_TRACK until we add it to all pmaps.
MI part of pmap_pv(9) change proposed on tech-kern:
https://mail-index.netbsd.org/tech-kern/2015/03/26/msg018561.html
show more ...
|
#
5bb32f78 |
| 29-Jan-2013 |
para <para@NetBSD.org> |
improve on comments
|
#
a1994013 |
| 17-Feb-2012 |
matt <matt@NetBSD.org> |
Make sure to export uvmexp_* if MODULAR is defined. Make the uvmexp_page* be a pointer to a const int as well as having the pointer be const as well.
|
#
bc9403f1 |
| 28-Jan-2012 |
rmind <rmind@NetBSD.org> |
pool_page_alloc, pool_page_alloc_meta: avoid extra compare, use const. ffs_mountfs,sys_swapctl: replace memset with kmem_zalloc. sys_swapctl: move kmem_free outside the lock path. uvm_init: fix comme
pool_page_alloc, pool_page_alloc_meta: avoid extra compare, use const. ffs_mountfs,sys_swapctl: replace memset with kmem_zalloc. sys_swapctl: move kmem_free outside the lock path. uvm_init: fix comment, remove pointless numeration of steps. uvm_map_enter: remove meflagval variable. Fix some indentation.
show more ...
|
#
e62ee4d4 |
| 27-Jan-2012 |
para <para@NetBSD.org> |
extending vmem(9) to be able to allocated resources for it's own needs. simplifying uvm_map handling (no special kernel entries anymore no relocking) make malloc(9) a thin wrapper around kmem(9) (wit
extending vmem(9) to be able to allocated resources for it's own needs. simplifying uvm_map handling (no special kernel entries anymore no relocking) make malloc(9) a thin wrapper around kmem(9) (with private interface for interrupt safety reasons)
releng@ acknowledged
show more ...
|
#
520d1ecf |
| 24-Apr-2011 |
rmind <rmind@NetBSD.org> |
Initialize UVM loaning subsystem a bit later, after kmem(9). Makes UVMHIST work again.
|
#
c22a3698 |
| 23-Apr-2011 |
rmind <rmind@NetBSD.org> |
Replace "malloc" in comments, remove unnecessary header inclusions.
|
#
3ba477b1 |
| 02-Feb-2011 |
chuck <chuck@NetBSD.org> |
udpate license clauses on my code to match the new-style BSD licenses. based on diff that rmind@ sent me.
no functional change with this commit.
|
#
1674b654 |
| 14-Nov-2010 |
uebayasi <uebayasi@NetBSD.org> |
Oops. Fix thinko.
|
#
c9ff0b16 |
| 14-Nov-2010 |
uebayasi <uebayasi@NetBSD.org> |
Platforms that dynamically set PAGE_{SIZE,MASK,SHIFT}, those values are saved in struct uvmexp. Expose only the relevant part for symbol users, so that they don't need to include the whole uvm(9) AP
Platforms that dynamically set PAGE_{SIZE,MASK,SHIFT}, those values are saved in struct uvmexp. Expose only the relevant part for symbol users, so that they don't need to include the whole uvm(9) API.
show more ...
|
#
40cf6f36 |
| 21-Oct-2009 |
rmind <rmind@NetBSD.org> |
Remove uarea swap-out functionality:
- Addresses the issue described in PR/38828. - Some simplification in threading and sleepq subsystems. - Eliminates pmap_collect() and, as a side note, allows pm
Remove uarea swap-out functionality:
- Addresses the issue described in PR/38828. - Some simplification in threading and sleepq subsystems. - Eliminates pmap_collect() and, as a side note, allows pmap optimisations. - Eliminates XS_CTL_DATA_ONSTACK in scsipi code. - Avoids few scans on LWP list and thus potentially long holds of proc_lock. - Cuts ~1.5k lines of code. Reduces amd64 kernel size by ~4k. - Removes __SWAP_BROKEN cases.
Tested on x86, mips, acorn32 (thanks <mpumford>) and partly tested on acorn26 (thanks to <bjh21>).
Discussed on <tech-kern>, reviewed by <ad>.
show more ...
|
#
5c68e5d0 |
| 28-Jun-2009 |
rmind <rmind@NetBSD.org> |
Ephemeral mapping (emap) implementation. Concept is based on the idea that activity of other threads will perform the TLB flush for the processes using emap as a side effect. To track that, global
Ephemeral mapping (emap) implementation. Concept is based on the idea that activity of other threads will perform the TLB flush for the processes using emap as a side effect. To track that, global and per-CPU generation numbers are used. This idea was suggested by Andrew Doran; various improvements to it by me. Notes:
- For now, zero-copy on pipe is not yet enabled. - TCP socket code would likely need more work. - Additional UVM loaning improvements are needed.
Proposed on <tech-kern>, silence there. Quickly reviewed by <ad>.
show more ...
|