mirror of
https://git.proxmox.com/git/mirror_zfs.git
synced 2026-05-22 18:40:43 +03:00
ARC: Remove b_bufcnt/b_ebufcnt from ARC headers
In most cases we do not care about exact number of buffers linked to the header, we just need to know if it is zero, non-zero or one. That can easily be checked just looking on b_buf pointer or in some cases derefencing it. b_ebufcnt is read only once, and in that case we already traverse the list as part of arc_buf_remove(), so second traverse should not be expensive. This reduces L1 ARC header size by 8 bytes and full crypto header by 16 bytes, down to 176 and 232 bytes on FreeBSD respectively. Reviewed-by: Brian Behlendorf <behlendorf1@llnl.gov> Signed-off-by: Alexander Motin <mav@FreeBSD.org> Sponsored by: iXsystems, Inc. Closes #15350
This commit is contained in:
committed by
Brian Behlendorf
parent
bc77a0c85e
commit
ba7797c8db
@@ -51,7 +51,6 @@ DECLARE_EVENT_CLASS(zfs_arc_buf_hdr_class,
|
||||
__array(uint64_t, hdr_dva_word, 2)
|
||||
__field(uint64_t, hdr_birth)
|
||||
__field(uint32_t, hdr_flags)
|
||||
__field(uint32_t, hdr_bufcnt)
|
||||
__field(arc_buf_contents_t, hdr_type)
|
||||
__field(uint16_t, hdr_psize)
|
||||
__field(uint16_t, hdr_lsize)
|
||||
@@ -70,7 +69,6 @@ DECLARE_EVENT_CLASS(zfs_arc_buf_hdr_class,
|
||||
__entry->hdr_dva_word[1] = ab->b_dva.dva_word[1];
|
||||
__entry->hdr_birth = ab->b_birth;
|
||||
__entry->hdr_flags = ab->b_flags;
|
||||
__entry->hdr_bufcnt = ab->b_l1hdr.b_bufcnt;
|
||||
__entry->hdr_psize = ab->b_psize;
|
||||
__entry->hdr_lsize = ab->b_lsize;
|
||||
__entry->hdr_spa = ab->b_spa;
|
||||
@@ -84,12 +82,12 @@ DECLARE_EVENT_CLASS(zfs_arc_buf_hdr_class,
|
||||
__entry->hdr_refcount = ab->b_l1hdr.b_refcnt.rc_count;
|
||||
),
|
||||
TP_printk("hdr { dva 0x%llx:0x%llx birth %llu "
|
||||
"flags 0x%x bufcnt %u type %u psize %u lsize %u spa %llu "
|
||||
"flags 0x%x type %u psize %u lsize %u spa %llu "
|
||||
"state_type %u access %lu mru_hits %u mru_ghost_hits %u "
|
||||
"mfu_hits %u mfu_ghost_hits %u l2_hits %u refcount %lli }",
|
||||
__entry->hdr_dva_word[0], __entry->hdr_dva_word[1],
|
||||
__entry->hdr_birth, __entry->hdr_flags,
|
||||
__entry->hdr_bufcnt, __entry->hdr_type, __entry->hdr_psize,
|
||||
__entry->hdr_type, __entry->hdr_psize,
|
||||
__entry->hdr_lsize, __entry->hdr_spa, __entry->hdr_state_type,
|
||||
__entry->hdr_access, __entry->hdr_mru_hits,
|
||||
__entry->hdr_mru_ghost_hits, __entry->hdr_mfu_hits,
|
||||
@@ -192,7 +190,6 @@ DECLARE_EVENT_CLASS(zfs_arc_miss_class,
|
||||
__array(uint64_t, hdr_dva_word, 2)
|
||||
__field(uint64_t, hdr_birth)
|
||||
__field(uint32_t, hdr_flags)
|
||||
__field(uint32_t, hdr_bufcnt)
|
||||
__field(arc_buf_contents_t, hdr_type)
|
||||
__field(uint16_t, hdr_psize)
|
||||
__field(uint16_t, hdr_lsize)
|
||||
@@ -223,7 +220,6 @@ DECLARE_EVENT_CLASS(zfs_arc_miss_class,
|
||||
__entry->hdr_dva_word[1] = hdr->b_dva.dva_word[1];
|
||||
__entry->hdr_birth = hdr->b_birth;
|
||||
__entry->hdr_flags = hdr->b_flags;
|
||||
__entry->hdr_bufcnt = hdr->b_l1hdr.b_bufcnt;
|
||||
__entry->hdr_psize = hdr->b_psize;
|
||||
__entry->hdr_lsize = hdr->b_lsize;
|
||||
__entry->hdr_spa = hdr->b_spa;
|
||||
@@ -255,7 +251,7 @@ DECLARE_EVENT_CLASS(zfs_arc_miss_class,
|
||||
__entry->zb_blkid = zb->zb_blkid;
|
||||
),
|
||||
TP_printk("hdr { dva 0x%llx:0x%llx birth %llu "
|
||||
"flags 0x%x bufcnt %u psize %u lsize %u spa %llu state_type %u "
|
||||
"flags 0x%x psize %u lsize %u spa %llu state_type %u "
|
||||
"access %lu mru_hits %u mru_ghost_hits %u mfu_hits %u "
|
||||
"mfu_ghost_hits %u l2_hits %u refcount %lli } "
|
||||
"bp { dva0 0x%llx:0x%llx dva1 0x%llx:0x%llx dva2 "
|
||||
@@ -264,7 +260,7 @@ DECLARE_EVENT_CLASS(zfs_arc_miss_class,
|
||||
"blkid %llu }",
|
||||
__entry->hdr_dva_word[0], __entry->hdr_dva_word[1],
|
||||
__entry->hdr_birth, __entry->hdr_flags,
|
||||
__entry->hdr_bufcnt, __entry->hdr_psize, __entry->hdr_lsize,
|
||||
__entry->hdr_psize, __entry->hdr_lsize,
|
||||
__entry->hdr_spa, __entry->hdr_state_type, __entry->hdr_access,
|
||||
__entry->hdr_mru_hits, __entry->hdr_mru_ghost_hits,
|
||||
__entry->hdr_mfu_hits, __entry->hdr_mfu_ghost_hits,
|
||||
|
||||
Reference in New Issue
Block a user