git: b9fd884a8d0b - main - sys/vm: Add TSLOG to some functions
- Go to: [ bottom of page ] [ top of archives ] [ this month ]
Date: Fri, 12 Aug 2022 23:53:17 UTC
The branch main has been updated by cperciva: URL: https://cgit.FreeBSD.org/src/commit/?id=b9fd884a8d0b249f77519a2c7f156b786fcc1c62 commit b9fd884a8d0b249f77519a2c7f156b786fcc1c62 Author: Colin Percival <cperciva@FreeBSD.org> AuthorDate: 2022-08-12 23:52:47 +0000 Commit: Colin Percival <cperciva@FreeBSD.org> CommitDate: 2022-08-12 23:53:04 +0000 sys/vm: Add TSLOG to some functions The functions pbuf_init, kva_alloc, and keg_alloc_slab are significant contributors to the kernel boot time when FreeBSD boots inside the Firecracker VMM. Instrument them so they show up on flamecharts. --- sys/vm/uma_core.c | 3 +++ sys/vm/vm_kern.c | 2 ++ sys/vm/vm_pager.c | 4 ++++ 3 files changed, 9 insertions(+) diff --git a/sys/vm/uma_core.c b/sys/vm/uma_core.c index 1afcb45c4d2b..1351a54345d9 100644 --- a/sys/vm/uma_core.c +++ b/sys/vm/uma_core.c @@ -1762,6 +1762,8 @@ keg_alloc_slab(uma_keg_t keg, uma_zone_t zone, int domain, int flags, uint8_t sflags; int i; + TSENTER(); + KASSERT(domain >= 0 && domain < vm_ndomains, ("keg_alloc_slab: domain %d out of range", domain)); @@ -1858,6 +1860,7 @@ keg_alloc_slab(uma_keg_t keg, uma_zone_t zone, int domain, int flags, dom->ud_pages += keg->uk_ppera; dom->ud_free_items += keg->uk_ipers; + TSEXIT(); return (slab); fail: diff --git a/sys/vm/vm_kern.c b/sys/vm/vm_kern.c index ac132f8ec0f3..7a61a29c81a4 100644 --- a/sys/vm/vm_kern.c +++ b/sys/vm/vm_kern.c @@ -148,9 +148,11 @@ kva_alloc(vm_size_t size) { vm_offset_t addr; + TSENTER(); size = round_page(size); if (vmem_alloc(kernel_arena, size, M_BESTFIT | M_NOWAIT, &addr)) return (0); + TSEXIT(); return (addr); } diff --git a/sys/vm/vm_pager.c b/sys/vm/vm_pager.c index 2f8afd69a1b4..cc0be174987d 100644 --- a/sys/vm/vm_pager.c +++ b/sys/vm/vm_pager.c @@ -495,6 +495,8 @@ pbuf_init(void *mem, int size, int flags) { struct buf *bp = mem; + TSENTER(); + bp->b_kvabase = (void *)kva_alloc(ptoa(PBUF_PAGES)); if (bp->b_kvabase == NULL) return (ENOMEM); @@ -504,6 +506,8 @@ pbuf_init(void *mem, int size, int flags) bp->b_rcred = bp->b_wcred = NOCRED; bp->b_xflags = 0; + TSEXIT(); + return (0); }