Skip to content

Conversation

@mkroening
Copy link
Member

@mkroening mkroening commented Oct 27, 2025

Default (without `feature = "log-target"`)
[            ][0][INFO]  Welcome to Hermit 0.11.0
[            ][0][INFO]  Git version: v0.11.0-740-g177c47d (dirty) (opt-level=0)
[            ][0][INFO]  Enabled features: acpi, pci
[            ][0][INFO]  Built on Mon, 27 Oct 2025 16:34:17 +0000
[            ][0][INFO]  Kernel starts at 0x1600000
[            ][0][INFO]  FDT:
 / {
    compatible = "hermit,multiboot"
    #address-cells = <0x2>
    #size-cells = <0x2>

    memory@0 {
        device_type = "memory"
        reg = <0x0 0x9fc00>
    };

    memory@100000 {
        device_type = "memory"
        reg = <0x100000 0x3fee0000>
    };

    chosen {
        bootargs = [104, 101, 114, 109, 105, 116, 45, 108, 111, 97, 100, 101, 114, 45, 120, 56, 54, 95, 54, 52, 32, 0]
    };
};

[            ][0][INFO]  BSS starts at 0x1839880
[            ][0][INFO]  tls_info = Some(
    TlsInfo {
        start: 0x180fdd0,
        filesz: 0x20,
        memsz: 0x70,
        align: 0x8,
    },
)
[            ][0][INFO]  Total memory size: 997 MiB
[            ][0][INFO]  Kernel region: 0x1600000..0x1a00000
[            ][0][INFO]  Minimum memory size: 31 MiB
[            ][0][INFO]  Heap: size 866 MB, start address 0x400000000000
[            ][0][INFO]  Heap is located at 0x400000000000..0x400036200000 (0 Bytes unmapped)
[            ][0][INFO]  FrameAlloc free list:
         0x1c02000..         0x1e00000 (len =           0x1fe000, pages =              510)
        0x37e00000..        0x3ffe0000 (len =          0x81e0000, pages =            33248)
[            ][0][INFO]  PageAlloc free list:
    0x400036200000..    0x800000000000 (len =     0x3fffc9e00000, pages =      17179647488)
[            ][0][INFO]  bootargs = hermit-loader-x86_64 
[    0.192108][0][INFO]  
[    0.196738][0][INFO]  ========================== CPU INFORMATION ===========================
[    0.200551][0][INFO]  Model:                   Intel Core Processor (Skylake)
[    0.201002][0][INFO]  Frequency:               997 MHz (from Measurement)
[    0.201540][0][INFO]  SpeedStep Technology:    Not Available
[    0.201888][0][INFO]  Features:                MMX SSE SSE2 SSE3 SSSE3 SSE4.1 SSE4.2 AVX AESNI RDRAND FMA MOVBE MCE FXSR XSAVE RDTSCP CLFLUSH X2APIC HYPERVISOR AVX2 BMI1 BMI2 FSGSBASE RDSEED 
[    0.203856][0][INFO]  Physical Address Width:  40 bits
[    0.204347][0][INFO]  Linear Address Width:    48 bits
[    0.204684][0][INFO]  Supports 1GiB Pages:     No
[    0.204948][0][INFO]  ======================================================================
[    0.205372][0][INFO]  
[    0.219316][0][INFO]  Hermit booted on 2025-10-27 16:34:28.782381 +00:00:00
[    0.228089][0][INFO]  Found an ACPI revision 0 table at 0xF52E0 with OEM ID "BOCHS "
[    0.242472][0][INFO]  Initialized PCI
[    0.274663][0][INFO]  IOAPIC v32 has 24 entries
[    0.280707][0][INFO]  
[    0.280935][0][INFO]  ===================== MULTIPROCESSOR INFORMATION =====================
[    0.281317][0][INFO]  APIC in use:             x2APIC
[    0.281582][0][INFO]  Initialized CPUs:        1
[    0.281824][0][INFO]  ======================================================================
[    0.282197][0][INFO]  
[    0.282370][0][INFO]  Compiled with PCI support
[    0.282644][0][INFO]  Compiled with ACPI support
[    0.282918][0][INFO]  
[    0.283099][0][INFO]  ======================== PCI BUS INFORMATION =========================
[    0.283873][0][INFO]  00:00 Unknown Class [0600]: Unknown Vendor Unknown Device [8086:1237]
[    0.285042][0][INFO]  00:01 Unknown Class [0601]: Unknown Vendor Unknown Device [8086:7000]
[    0.285385][0][INFO]  00:02 Unknown Class [0300]: Unknown Vendor Unknown Device [1234:1111], BAR0 Memory32 { address: 0xFD000000, size: 0x1000000, prefetchable: true }, BAR2 Memory32 { address: 0xFEBF0000, size: 0x1000, prefetchable: false }
[    0.286593][0][INFO]  00:03 Unknown Class [0200]: Unknown Vendor Unknown Device [8086:100E], IRQ 11, BAR0 Memory32 { address: 0xFEBC0000, size: 0x20000, prefetchable: false }, BAR1 IO { port: 0xC000 }
[    0.287492][0][INFO]  ======================================================================
[    0.287951][0][INFO]  
[    0.298523][0][INFO]  Hermit is running on common system!
[    0.337744][0][INFO]  Jumping into application
Hello, world!
Number of interrupts
exit status 0
Before (with `feature = "log-target"`)
[            ][0][INFO hermit] Welcome to Hermit 0.11.0
[            ][0][INFO hermit] Git version: v0.11.0-739-g987c04f (opt-level=0)
[            ][0][INFO hermit] Enabled features: acpi, log_target, pci
[            ][0][INFO hermit] Built on Mon, 27 Oct 2025 16:37:21 +0000
[            ][0][INFO hermit] Kernel starts at 0x1600000
[            ][0][INFO hermit] FDT:
 / {
    compatible = "hermit,multiboot"
    #address-cells = <0x2>
    #size-cells = <0x2>

    memory@0 {
        device_type = "memory"
        reg = <0x0 0x9fc00>
    };

    memory@100000 {
        device_type = "memory"
        reg = <0x100000 0x3fee0000>
    };

    chosen {
        bootargs = [104, 101, 114, 109, 105, 116, 45, 108, 111, 97, 100, 101, 114, 45, 120, 56, 54, 95, 54, 52, 32, 0]
    };
};

[            ][0][INFO hermit] BSS starts at 0x1837400
[            ][0][INFO hermit] tls_info = Some(
    TlsInfo {
        start: 0x180da30,
        filesz: 0x20,
        memsz: 0x70,
        align: 0x8,
    },
)
[            ][0][INFO hermit::mm] Total memory size: 997 MiB
[            ][0][INFO hermit::mm] Kernel region: 0x1600000..0x1a00000
[            ][0][INFO hermit::mm] Minimum memory size: 31 MiB
[            ][0][INFO hermit::mm] Heap: size 866 MB, start address 0x400000000000
[            ][0][INFO hermit::mm] Heap is located at 0x400000000000..0x400036200000 (0 Bytes unmapped)
[            ][0][INFO hermit::mm] FrameAlloc free list:
         0x1c02000..         0x1e00000 (len =           0x1fe000, pages =              510)
        0x37e00000..        0x3ffe0000 (len =          0x81e0000, pages =            33248)
[            ][0][INFO hermit::mm] PageAlloc free list:
    0x400036200000..    0x800000000000 (len =     0x3fffc9e00000, pages =      17179647488)
[            ][0][INFO hermit::env] bootargs = hermit-loader-x86_64 
[    0.193854][0][INFO hermit::arch::x86_64::kernel::processor] 
[    0.197737][0][INFO hermit::arch::x86_64::kernel::processor] ========================== CPU INFORMATION ===========================
[    0.201324][0][INFO hermit::arch::x86_64::kernel::processor] Model:                   Intel Core Processor (Skylake)
[    0.201781][0][INFO hermit::arch::x86_64::kernel::processor] Frequency:               984 MHz (from Measurement)
[    0.202331][0][INFO hermit::arch::x86_64::kernel::processor] SpeedStep Technology:    Not Available
[    0.202737][0][INFO hermit::arch::x86_64::kernel::processor] Features:                MMX SSE SSE2 SSE3 SSSE3 SSE4.1 SSE4.2 AVX AESNI RDRAND FMA MOVBE MCE FXSR XSAVE RDTSCP CLFLUSH X2APIC HYPERVISOR AVX2 BMI1 BMI2 FSGSBASE RDSEED 
[    0.204577][0][INFO hermit::arch::x86_64::kernel::processor] Physical Address Width:  40 bits
[    0.204961][0][INFO hermit::arch::x86_64::kernel::processor] Linear Address Width:    48 bits
[    0.205511][0][INFO hermit::arch::x86_64::kernel::processor] Supports 1GiB Pages:     No
[    0.205822][0][INFO hermit::arch::x86_64::kernel::processor] ======================================================================
[    0.206276][0][INFO hermit::arch::x86_64::kernel::processor] 
[    0.219948][0][INFO hermit::arch::x86_64::kernel::systemtime] Hermit booted on 2025-10-27 16:37:22.781653 +00:00:00
[    0.229248][0][INFO hermit::arch::x86_64::kernel::acpi] Found an ACPI revision 0 table at 0xF52E0 with OEM ID "BOCHS "
[    0.243423][0][INFO hermit::arch::x86_64::kernel::pci] Initialized PCI
[    0.275553][0][INFO hermit::arch::x86_64::kernel::apic] IOAPIC v32 has 24 entries
[    0.281738][0][INFO hermit::arch::x86_64::kernel::apic] 
[    0.282367][0][INFO hermit::arch::x86_64::kernel::apic] ===================== MULTIPROCESSOR INFORMATION =====================
[    0.282841][0][INFO hermit::arch::x86_64::kernel::apic] APIC in use:             x2APIC
[    0.283290][0][INFO hermit::arch::x86_64::kernel::apic] Initialized CPUs:        1
[    0.283606][0][INFO hermit::arch::x86_64::kernel::apic] ======================================================================
[    0.284433][0][INFO hermit::arch::x86_64::kernel::apic] 
[    0.284667][0][INFO hermit] Compiled with PCI support
[    0.284870][0][INFO hermit] Compiled with ACPI support
[    0.285092][0][INFO hermit::drivers::pci] 
[    0.285288][0][INFO hermit::drivers::pci] ======================== PCI BUS INFORMATION =========================
[    0.286234][0][INFO hermit::drivers::pci] 00:00 Unknown Class [0600]: Unknown Vendor Unknown Device [8086:1237]
[    0.287383][0][INFO hermit::drivers::pci] 00:01 Unknown Class [0601]: Unknown Vendor Unknown Device [8086:7000]
[    0.287724][0][INFO hermit::drivers::pci] 00:02 Unknown Class [0300]: Unknown Vendor Unknown Device [1234:1111], BAR0 Memory32 { address: 0xFD000000, size: 0x1000000, prefetchable: true }, BAR2 Memory32 { address: 0xFEBF0000, size: 0x1000, prefetchable: false }
[    0.289606][0][INFO hermit::drivers::pci] 00:03 Unknown Class [0200]: Unknown Vendor Unknown Device [8086:100E], IRQ 11, BAR0 Memory32 { address: 0xFEBC0000, size: 0x20000, prefetchable: false }, BAR1 IO { port: 0xC000 }
[    0.290469][0][INFO hermit::drivers::pci] ======================================================================
[    0.291054][0][INFO hermit::drivers::pci] 
[    0.301667][0][INFO hermit] Hermit is running on common system!
[    0.340783][0][INFO hermit] Jumping into application
Hello, world!
Number of interrupts
exit status 0
After (with `feature = "log-target"`)
[            ][0][INFO  hermit    ] Welcome to Hermit 0.11.0
[            ][0][INFO  hermit    ] Git version: v0.11.0-741-g6e5ee28 (opt-level=0)
[            ][0][INFO  hermit    ] Enabled features: acpi, log_target, pci
[            ][0][INFO  hermit    ] Built on Tue, 28 Oct 2025 09:59:06 +0000
[            ][0][INFO  hermit    ] Kernel starts at 0x1600000
[            ][0][INFO  hermit    ] FDT:
 / {
    compatible = "hermit,multiboot"
    #address-cells = <0x2>
    #size-cells = <0x2>

    memory@0 {
        device_type = "memory"
        reg = <0x0 0x9fc00>
    };

    memory@100000 {
        device_type = "memory"
        reg = <0x100000 0x3fee0000>
    };

    chosen {
        bootargs = [104, 101, 114, 109, 105, 116, 45, 108, 111, 97, 100, 101, 114, 45, 120, 56, 54, 95, 54, 52, 32, 0]
    };
};

[            ][0][INFO  hermit    ] BSS starts at 0x18399f0
[            ][0][INFO  hermit    ] tls_info = Some(
    TlsInfo {
        start: 0x180fed0,
        filesz: 0x20,
        memsz: 0x70,
        align: 0x8,
    },
)
[            ][0][INFO  mm        ] Total memory size: 997 MiB
[            ][0][INFO  mm        ] Kernel region: 0x1600000..0x1a00000
[            ][0][INFO  mm        ] Minimum memory size: 31 MiB
[            ][0][INFO  mm        ] Heap: size 866 MB, start address 0x400000000000
[            ][0][INFO  mm        ] Heap is located at 0x400000000000..0x400036200000 (0 Bytes unmapped)
[            ][0][INFO  mm        ] FrameAlloc free list:
         0x1c02000..         0x1e00000 (len =           0x1fe000, pages =              510)
        0x37e00000..        0x3ffe0000 (len =          0x81e0000, pages =            33248)
[            ][0][INFO  mm        ] PageAlloc free list:
    0x400036200000..    0x800000000000 (len =     0x3fffc9e00000, pages =      17179647488)
[            ][0][INFO  env       ] bootargs = hermit-loader-x86_64 
[    0.184683][0][INFO  processor ] 
[    0.189432][0][INFO  processor ] ========================== CPU INFORMATION ===========================
[    0.193044][0][INFO  processor ] Model:                   Intel Core Processor (Skylake)
[    0.193479][0][INFO  processor ] Frequency:               999 MHz (from Measurement)
[    0.194020][0][INFO  processor ] SpeedStep Technology:    Not Available
[    0.194352][0][INFO  processor ] Features:                MMX SSE SSE2 SSE3 SSSE3 SSE4.1 SSE4.2 AVX AESNI RDRAND FMA MOVBE MCE FXSR XSAVE RDTSCP CLFLUSH X2APIC HYPERVISOR AVX2 BMI1 BMI2 FSGSBASE RDSEED 
[    0.196058][0][INFO  processor ] Physical Address Width:  40 bits
[    0.196386][0][INFO  processor ] Linear Address Width:    48 bits
[    0.196698][0][INFO  processor ] Supports 1GiB Pages:     No
[    0.196966][0][INFO  processor ] ======================================================================
[    0.197351][0][INFO  processor ] 
[    0.210924][0][INFO  systemtime] Hermit booted on 2025-10-28 9:59:07.79084 +00:00:00
[    0.219699][0][INFO  acpi      ] Found an ACPI revision 0 table at 0xF52E0 with OEM ID "BOCHS "
[    0.234051][0][INFO  pci       ] Initialized PCI
[    0.266300][0][INFO  apic      ] IOAPIC v32 has 24 entries
[    0.272304][0][INFO  apic      ] 
[    0.272557][0][INFO  apic      ] ===================== MULTIPROCESSOR INFORMATION =====================
[    0.272952][0][INFO  apic      ] APIC in use:             x2APIC
[    0.273251][0][INFO  apic      ] Initialized CPUs:        1
[    0.273502][0][INFO  apic      ] ======================================================================
[    0.273877][0][INFO  apic      ] 
[    0.274069][0][INFO  hermit    ] Compiled with PCI support
[    0.274345][0][INFO  hermit    ] Compiled with ACPI support
[    0.274604][0][INFO  pci       ] 
[    0.274802][0][INFO  pci       ] ======================== PCI BUS INFORMATION =========================
[    0.275578][0][INFO  pci       ] 00:00 Unknown Class [0600]: Unknown Vendor Unknown Device [8086:1237]
[    0.276561][0][INFO  pci       ] 00:01 Unknown Class [0601]: Unknown Vendor Unknown Device [8086:7000]
[    0.276861][0][INFO  pci       ] 00:02 Unknown Class [0300]: Unknown Vendor Unknown Device [1234:1111], BAR0 Memory32 { address: 0xFD000000, size: 0x1000000, prefetchable: true }, BAR2 Memory32 { address: 0xFEBF0000, size: 0x1000, prefetchable: false }
[    0.278221][0][INFO  pci       ] 00:03 Unknown Class [0200]: Unknown Vendor Unknown Device [8086:100E], IRQ 11, BAR0 Memory32 { address: 0xFEBC0000, size: 0x20000, prefetchable: false }, BAR1 IO { port: 0xC000 }
[    0.279183][0][INFO  pci       ] ======================================================================
[    0.279629][0][INFO  pci       ] 
[    0.290250][0][INFO  hermit    ] Hermit is running on common system!
[    0.329476][0][INFO  hermit    ] Jumping into application
Hello, world!
Number of interrupts
exit status 0

This should address a large part of #1974.

@mkroening mkroening self-assigned this Oct 27, 2025
mkroening and others added 2 commits October 28, 2025 10:58
Co-authored-by: Panagiotis "Ivory" Vasilopoulos <[email protected]>
Copy link
Contributor

@github-actions github-actions bot left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Benchmark Results

Benchmark Current: 6e5ee28 Previous: 0b7fc73 Performance Ratio
startup_benchmark Build Time 111.24 s 124.30 s 0.89
startup_benchmark File Size 0.91 MB 0.86 MB 1.06
Startup Time - 1 core 0.89 s (±0.04 s) 1.05 s (±0.02 s) 0.85
Startup Time - 2 cores 0.91 s (±0.04 s) 1.04 s (±0.03 s) 0.87
Startup Time - 4 cores 0.91 s (±0.03 s) 1.03 s (±0.02 s) 0.88
multithreaded_benchmark Build Time 112.09 s 126.23 s 0.89
multithreaded_benchmark File Size 1.02 MB 0.96 MB 1.05
Multithreaded Pi Efficiency - 2 Threads 89.19 % (±7.94 %) 84.80 % (±7.75 %) 1.05
Multithreaded Pi Efficiency - 4 Threads 43.58 % (±3.76 %) 42.45 % (±2.98 %) 1.03
Multithreaded Pi Efficiency - 8 Threads 25.19 % (±1.87 %) 24.52 % (±2.36 %) 1.03
micro_benchmarks Build Time 268.37 s 274.29 s 0.98
micro_benchmarks File Size 1.02 MB 0.97 MB 1.05
Scheduling time - 1 thread 163.83 ticks (±13.16 ticks) 148.36 ticks (±12.93 ticks) 1.10
Scheduling time - 2 threads 94.35 ticks (±18.25 ticks) 88.04 ticks (±13.54 ticks) 1.07
Micro - Time for syscall (getpid) 10.63 ticks (±5.93 ticks) 10.38 ticks (±5.26 ticks) 1.02
Memcpy speed - (built_in) block size 4096 64237.37 MByte/s (±45478.50 MByte/s) 56952.43 MByte/s (±41782.00 MByte/s) 1.13
Memcpy speed - (built_in) block size 1048576 15926.59 MByte/s (±12986.66 MByte/s) 15647.95 MByte/s (±12805.19 MByte/s) 1.02
Memcpy speed - (built_in) block size 16777216 11425.21 MByte/s (±9263.96 MByte/s) 11222.99 MByte/s (±9160.99 MByte/s) 1.02
Memset speed - (built_in) block size 4096 64152.30 MByte/s (±45434.53 MByte/s) 57346.55 MByte/s (±42024.24 MByte/s) 1.12
Memset speed - (built_in) block size 1048576 16322.01 MByte/s (±13187.90 MByte/s) 16072.80 MByte/s (±13089.20 MByte/s) 1.02
Memset speed - (built_in) block size 16777216 11744.30 MByte/s (±9472.71 MByte/s) 11485.66 MByte/s (±9311.28 MByte/s) 1.02
Memcpy speed - (rust) block size 4096 58646.26 MByte/s (±42162.60 MByte/s) 56725.21 MByte/s (±40857.65 MByte/s) 1.03
Memcpy speed - (rust) block size 1048576 16208.18 MByte/s (±12900.80 MByte/s) 15912.94 MByte/s (±12954.57 MByte/s) 1.02
Memcpy speed - (rust) block size 16777216 11562.63 MByte/s (±9398.68 MByte/s) 11044.74 MByte/s (±8978.39 MByte/s) 1.05
Memset speed - (rust) block size 4096 59393.65 MByte/s (±42722.15 MByte/s) 57139.62 MByte/s (±41108.43 MByte/s) 1.04
Memset speed - (rust) block size 1048576 16454.62 MByte/s (±13025.51 MByte/s) 16296.05 MByte/s (±13185.87 MByte/s) 1.01
Memset speed - (rust) block size 16777216 11904.35 MByte/s (±9630.29 MByte/s) 11283.59 MByte/s (±9110.64 MByte/s) 1.06
alloc_benchmarks Build Time 265.28 s 276.44 s 0.96
alloc_benchmarks File Size 0.97 MB 0.92 MB 1.06
Allocations - Allocation success 100.00 % 100.00 % 1
Allocations - Deallocation success 100.00 % 100.00 % 1
Allocations - Pre-fail Allocations 100.00 % 100.00 % 1
Allocations - Average Allocation time 17289.91 Ticks (±1030.40 Ticks) 17424.87 Ticks (±622.62 Ticks) 0.99
Allocations - Average Allocation time (no fail) 17289.91 Ticks (±1030.40 Ticks) 17424.87 Ticks (±622.62 Ticks) 0.99
Allocations - Average Deallocation time 2123.88 Ticks (±544.78 Ticks) 2128.52 Ticks (±372.69 Ticks) 1.00
mutex_benchmark Build Time 266.85 s 281.32 s 0.95
mutex_benchmark File Size 1.02 MB 0.97 MB 1.05
Mutex Stress Test Average Time per Iteration - 1 Threads 33.06 ns (±3.54 ns) 33.54 ns (±3.06 ns) 0.99
Mutex Stress Test Average Time per Iteration - 2 Threads 28.36 ns (±3.08 ns) 28.50 ns (±2.47 ns) 1.00

This comment was automatically generated by workflow using github-action-benchmark.

@mkroening mkroening added this pull request to the merge queue Oct 29, 2025
Merged via the queue into main with commit 42c0e9f Oct 29, 2025
17 checks passed
@mkroening mkroening deleted the log-target branch October 29, 2025 08:54
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

3 participants