@@ -46,6 +46,34 @@ CONFIG_SWIOTLB_DYNAMIC=y
4646CONFIG_TRANSPARENT_HUGEPAGE =y
4747CONFIG_TRANSPARENT_HUGEPAGE_MADVISE =y
4848
49+ # Let khugepaged collapse read-only file mappings -- in practice program and
50+ # library text -- into huge pages, for regions marked MADV_HUGEPAGE (or every
51+ # eligible region with THP "always"). Otherwise large-code workloads (torch's
52+ # shared libraries, say) run their text from 4 KiB pages and pay the
53+ # two-dimensional (guest + EPT) page walk on every iTLB miss.
54+ #
55+ # Kept in step with os/mkosi/components/kernel/kernel.config.
56+ CONFIG_READ_ONLY_THP_FOR_FS =y
57+
58+ # Multi-Gen LRU, built in but off by default: a workload under memory pressure
59+ # turns it on at runtime with "echo y > /sys/kernel/mm/lru_gen/enabled".
60+ #
61+ # Kept in step with os/mkosi/components/kernel/kernel.config.
62+ CONFIG_LRU_GEN =y
63+
64+ # BBR congestion control, built in so a container can select it through its own
65+ # network namespace (sysctl net.ipv4.tcp_congestion_control=bbr) without a
66+ # module load it has no privilege for. The default stays cubic.
67+ #
68+ # Kept in step with os/mkosi/components/kernel/kernel.config.
69+ CONFIG_TCP_CONG_BBR =y
70+
71+ # Initialise struct pages for most of memory in parallel kthreads after SMP
72+ # bring-up instead of on the boot CPU. A 512 GiB guest has 128M of them.
73+ #
74+ # Kept in step with os/mkosi/components/kernel/kernel.config.
75+ CONFIG_DEFERRED_STRUCT_PAGE_INIT =y
76+
4977# Network NIC drivers. GCP C3/modern instances use gVNIC (the Google gve
5078# driver); older/virtio instances use virtio-net. Without gve, a C3 CVM gets
5179# no NIC -> no DHCP -> no network. Build both in.
0 commit comments