v1.0.13
What's Changed
- scx_rustland: Simplify TaskTree push logic by @EricccTaiwan in #1841
- scx_rustland: Refactor TaskTree pop to remove redundant else by @EricccTaiwan in #1852
- chore(deps): update bpf/bpf-next kernel by @scx-ci-bot in #1853
- scx_p2dq: Cache node CPU masks on llc_ctx by @hodgesds in #1856
- scx_layered: fix verification failure on Clang 20 by @etsal in #1858
- scx_tickless: Misc improvements by @arighi in #1854
- scx_rustland: Refactor dispatch_tasks to simplify control flow by @EricccTaiwan in #1857
- scx_rustland: simplify monitor request handling in run() by @EricccTaiwan in #1862
- scx_rustland_core: Improve sync wakeups by @arighi in #1855
- scx_rustland_core: Fix CPU wakeup with RL_CPU_ANY by @arighi in #1863
- scxctl: list command panic on failure fix. by @devnexen in #1850
- scx_p2dq: Remove unneeded variable by @hodgesds in #1865
- scx_tickless: Fix build warning by @arighi in #1864
- vmlinux.h: Refresh vmlinux.h from sched_ext/for-6.16 (9b30400ff652) by @htejun in #1869
- scx_layered: prevent offset calculation during prefix matching from being optimized out by @etsal in #1868
- scx_layered: propagate task placement hints to BPF by @etsal in #1859
- chore(deps): update bpf/bpf-next kernel by @scx-ci-bot in #1870
- scx_qmap: Sync with the kernel changes to fix a build break. by @multics69 in #1872
- scx_stats: simplify channel send error handling with is_err() by @EricccTaiwan in #1867
- scx_lavd: Make the load balancing core compaction- and capacity-aware. by @multics69 in #1871
- scx_utils: cast ioctl opcodes to libc::Ioctl by @vimproved in #1860
- scx_p2dq: Optimize enqueue path lookups by @hodgesds in #1873
- scx_p2dq: Add --select-idle-in-enqueue flag by @hodgesds in #1875
- chaos: remove limit on delayed enqueue loop by @JakeHillion in #1874
- chore(deps): update bpf/bpf-next kernel by @scx-ci-bot in #1878
- chore(deps): update sched_ext/for-next kernel by @scx-ci-bot in #1877
- scx_bpfland: simplify error handling for sibling CPU setup by @EricccTaiwan in #1866
- scx_lavd: Donate tasks at ops.select_cpu() and ops.enqueue(). by @multics69 in #1879
- scx_lavd: Don't print unnecessary CPU preference orders. by @multics69 in #1880
- scx_stats: Cleanup imports by @hodgesds in #1882
- scx_rustland_core: propagate errors from enable_sibling_cpu_fn by @EricccTaiwan in #1883
- chore(deps): update bpf/bpf-next kernel by @scx-ci-bot in #1887
- chore(deps): update sched_ext/for-next kernel by @scx-ci-bot in #1888
- scx_rustland, scx_rlfifo: remove unused imports by @EricccTaiwan in #1890
- scx_lavd: make rustfmt happy by @EricccTaiwan in #1889
- chaos/p2dq: symlink lib to fix publishing by @JakeHillion in #1886
- scx_lavd: Find an alternative domain beyond the current node/LLC. by @multics69 in #1892
- scx_rustland_core: drop unused variable by @EricccTaiwan in #1891
- scx_rustland_core: skip L2/L3 search when domain is empty by @charliechiou in #1876
- scx_loader: Add rustland scheduler by @sirlucjan in #1896
- scx_rlfifo: Make the scheduler more viable by @arighi in #1895
- scx_rustland: Introduce a congestion threshold by @arighi in #1894
- meson: add llvm-strip as requirement. by @devnexen in #1884
- scx_chaos: Refactor thread join error handling by @EricccTaiwan in #1899
- ci: switch to nix built kernel by @JakeHillion in #1900
- scx_chaos: Add CPU frequency chaos by @hodgesds in #1901
- scx_lavd: Change the min slice to 500us. by @multics69 in #1902
- scx_utils: Choose a CPU capacity source more judiciously. by @multics69 in #1903
- scx_rustland_core: Refactor memory lock/unlock error handling by @EricccTaiwan in #1898
- scx_rustland_core: Ensure migration-disabled tasks are always enqueued by @arighi in #1897
- scx_utils: Remove unused assignment warning by @EricccTaiwan in #1905
- scx_utils: gpu topologyu add GPU's VRAM (max) clock frequency data. by @devnexen in #1908
- doc: Fix README title and link formatting by @EricccTaiwan in #1910
- docs: Add systing to developer guide by @hodgesds in #1909
- docs: clarify QueuedTask time field comments by @charliechiou in #1906
- scx_rustland_core: Get rid of the custom ops.update_idle() by @arighi in #1904
- scx_lavd: Simplify CPU preference order setup by @EricccTaiwan in #1913
- chore(deps): update stable/6_12 kernel by @scx-ci-bot in #1914
- chore(deps): update stable/linux-rolling-stable kernel by @scx-ci-bot in #1915
- scx_rustland_core / scx_rustland: Multiple improvements by @arighi in #1912
- scx_p2dq: Add fifo scheduling for interactive tasks by @hodgesds in #1916
- load_balance: Refactor
find_first_candidateby @EricccTaiwan in #1911 - scx_layered: Make exclusive work better by @htejun in #1918
- scx_p2dq: Optimize default hot paths by @hodgesds in #1919
- arenas: update aarch64 compat ifdef by @likewhatevs in #1920
- scx_lavd: Improving the performance stability and preemption. by @multics69 in #1922
- rust: Handle return value from
Option::takeby @EricccTaiwan in #1923 - chore(deps): update bpf/bpf-next kernel by @scx-ci-bot in #1921
- scx_p2dq: Optimize the keep running path by @hodgesds in #1925
- scx_layered: Remove loop workaround in pick_idle_cpu_from() by @htejun in #1930
- scx_mitosis: Strip down for static cpu pinning by @dschatzberg in #1932
- chaos: return prev_cpu instaed of -EINVAL in select_cpu by @JakeHillion in #1929
- ci: re-enable rustland on stable kernels by @JakeHillion in #1924
- chaos: refactor trait selection by @JakeHillion in #1931
- nix: build veristat from source by @JakeHillion in #1934
- lib,scx_p2dq: introduce arena topology by @etsal in #1885
- layered: improve compat of excl fixes on older kernels by @likewhatevs in #1933
- scx_lavd: Add --preempt-shift option. by @multics69 in #1928
- chore(deps): update sched_ext/for-next kernel by @scx-ci-bot in #1940
- chore(deps): update bpf/bpf-next kernel by @scx-ci-bot in #1941
- scx_rustland: Show version info by @arighi in #1942
- scx_p2dq: Call print_topology after attaching scheduler by @EricccTaiwan in #1936
- scx_p2dq: Optimize affinitized selection by @hodgesds in #1946
- scxtop: Update TUI defaults to slice-consumed by @yaakov-stein in #1945
- ci: fix CACHIX_AUTH_TOKEN access in integration-tests by @JakeHillion in #1943
- nix: add bpf-clang derivation by @JakeHillion in #1947
- scx_rustland_core: Minor optimizations by @arighi in #1944
- scx_layered: Flip the return polarity of sib_keep_idle() by @htejun in #1948
- scx_p2dq: Refactor vtime handling of migrating tasks by @hodgesds in #1833
- scx_layered: Fix race condition between picking an idle CPU and the CPU going idle by @htejun in #1952
- scx_p2dq: Fix interactive fifo handling by @hodgesds in #1950
- p2dq/chaos: add trait for skeletons that can have their arenas setup by @JakeHillion in #1954
- doc : require Rust 1.86 and add recommended Kconfig by @EricccTaiwan in #1881
- ci: push kernel and headers to cachix explicitly by @JakeHillion in #1955
- scx_mitosis: Fix cpumask casts and suppress BPF warnings by @EricccTaiwan in #1935
- scx_layered: add templates for layer generation by @etsal in #1951
- scx_rustland_core: Expose nr_cpus_allowed to user-space by @arighi in #1953
- chaos: implement pid targeting by @JakeHillion in #1957
- scx_rustland: Introduce --percpu-local by @arighi in #1956
- scx_layered: Remove redundant !idle test in layered_update_idle() by @htejun in #1958
- layered: inline sib_keep_idle by @likewhatevs in #1962
- scxtop: aggregate GLOBAL and LOCAL DSQs by @yaakov-stein in #1961
- layered: add match debug capability by @likewhatevs in #1964
- chore(deps): update stable/linux-rolling-stable kernel by @scx-ci-bot in #1967
- chore(deps): update sched_ext/for-next kernel by @scx-ci-bot in #1965
- chore(deps): update bpf/bpf-next kernel by @scx-ci-bot in #1966
- chore(deps): update stable/6_12 kernel by @scx-ci-bot in #1968
- scx_rustland_core: Disable THP for user-space scheduler by @arighi in #1960
- scx_p2dq: Cleanup pick_idle_cpu by @hodgesds in #1959
- scx_p2dq: Improve accuracy of runtime accounting by @hodgesds in #1963
- scx_chaos: Add degradation chaos event by @hodgesds in #1927
- scx_rustland_core: Misc updates by @arighi in #1970
- chore(deps): update bpf/bpf-next kernel by @scx-ci-bot in #1974
- scx_rustland: Read page faults via procfs crate by @EricccTaiwan in #1949
- scx_rustland_core: Always dispatch khugepaged directly by @arighi in #1976
- scx_layered: associate each layer with a cpumask by @etsal in #1972
- scx_layered: layered cpuset bpfmask by @etsal in #1978
- bitmap: Fix scx_bitmap_empty() to return correct result by @EricccTaiwan in #1981
- bitmap: Fix clear_cpu logic and replace int-based shifts by @EricccTaiwan in #1982
- scx_p2dq: Fix wakeup stalls by @hodgesds in #1985
- lib/sdt_alloc: Fix incorrect NULL check by @EricccTaiwan in #1987
- scx_rustland_core: Idle CPU selection refactoring and optimizations by @arighi in #1983
- lib/topo: Remove redundant scx_bitmask_copy() and properly comment topo_node() behavior by @EricccTaiwan in #1988
- lib/sdt_alloc: Switch to new memory block on alloc overflow by @EricccTaiwan in #1996
- scx_utils: topology: Improve logic to detect big.LITTLE cores by @arighi in #1994
- scxtop: add default instruction to help page by @yaakov-stein in #1990
- scx_p2dq: Refactor pick_idle_cpu for affinitized tasks by @hodgesds in #1973
- bpfland: Revert commits incorrectly applied by @arighi in #1999
- lib/std_alloc: Fix tab usage by @EricccTaiwan in #2000
- lib/sdt_alloc: recompute padding on allocation by @etsal in #1997
- chaos: move almost all processing into lib.rs by @JakeHillion in #2001
- scxtop: add search module by @yaakov-stein in #1989
- lib/sdt_alloc: Fix comment style for consistency by @EricccTaiwan in #2003
- lib/sdt_task: Handle allocation failure by @EricccTaiwan in #2005
- scx_layered: account for layer cpuset in lo_fb logic by @etsal in #1979
- scx_bpfland: Introduce --throttle-us by @arighi in #2004
- scx_p2dq: Refactor arena initialization by @hodgesds in #2009
- scx_bpfland: Simplify idle_smt conditional in kick_idle_cpu by @EricccTaiwan in #2007
- chore(deps): update bpf/bpf-next kernel by @scx-ci-bot in #2011
- scx_p2dq: Fix stalls in affinitized tasks by @hodgesds in #2014
- layered: add cgrp contains matcher by @likewhatevs in #2010
- lib, scx_p2dq: factor out arena interface programs by @etsal in #2015
- scxtop: enabling filtering perf events via input by @yaakov-stein in #2008
- scx_p2dq: Remove dead code by @hodgesds in #2019
- scx_p2dq: Remove dead code by @EricccTaiwan in #2020
- scx_wd40: integrate with topology add level calculation topology call by @etsal in #2021
- layered: compat tweaks by @likewhatevs in #2022
- scx_lavd: Fix typos by @charliechiou in #2012
- scx_lavd: Fix CPU topology sorting for ARM big.LITTLE systems by @CosmicBulb in #1992
- scx_p2dq: Cleanup dispatch_pick_two by @hodgesds in #2023
- scx_utils: update optional NVML dependency to latest release. by @devnexen in #2024
- Cargo.lock: Sync with NVML bump in scx_utils by @EricccTaiwan in #2025
- scx_rusty: arena library backports by @EricccTaiwan in #2017
- scx_p2dq: update load balancing by @yaakov-stein in #2029
- scx_layered: Fix vtime corruption when tasks are migrating across LLCs by @htejun in #2031
- scx_layered: Fix a typo by @htejun in #2032
- chore(deps): update stable/6_12 kernel by @scx-ci-bot in #2034
- chore(deps): update bpf/bpf-next kernel by @scx-ci-bot in #2035
- chore(deps): update stable/linux-rolling-stable kernel by @scx-ci-bot in #2036
- ci.py: add --locked to cargo to detect bad locks by @JakeHillion in #2028
- scx_bpfland: Support balance_power and balance_performance power modes by @arighi in #2016
- lib/topo: rework topology traversal by @etsal in #2030
- scx_utils: #1308 new attempt. by @devnexen in #2026
- scx_p2dq: Optimize pick_idle_cpu by avoiding extra map lookups by @hodgesds in #2038
- ravg_impl: Declare ravg_full_sum as const by @EricccTaiwan in #2027
- scxtop: fix minor rendering bug by @yaakov-stein in #2033
- scxtop: Fix incorrect overwrite by @EricccTaiwan in #2039
- scx_p2dq: Refactor load balance imbalanced handling by @hodgesds in #2037
- scx_layered: add option for printing layer config and exiting by @etsal in #2040
- scx_p2dq: further optimize by reducing map lookups by @yaakov-stein in #2041
- scx_layered: add template suffix as and term to each or block by @etsal in #2042
- scxtop: adding guiding instructions by @yaakov-stein in #2043
- scx_layered: Better prioritize highpri per-cpu kthreads by @htejun in #2046
- scxtop/search: Return early if pattern is too long by @EricccTaiwan in #2044
- scx_utils: set gpu topology cpu affinity based on the same NUMA node. by @devnexen in #2045
- scx_lavd: simplify conditional return in can_direct_dispatch() by @charliechiou in #2048
- scx_lavd: improve terminal readability by @charliechiou in #2050
- scx_lavd: fix null check order by @charliechiou in #2052
- scx_lavd/stats: Fix typos by @EricccTaiwan in #2053
- scx_lavd/stats: Align #PREEMPT column width with header by @EricccTaiwan in #2051
- lib/topology: add per-level traversal macros by @etsal in #2047
- rust: Remove redundant references in log statements by @EricccTaiwan in #2055
- scx_lavd: add logging for missing context by @charliechiou in #2054
- scx_lavd: add error context for formatting failure by @charliechiou in #2056
- scx_p2dq: Misc formatting cleanup by @hodgesds in #2060
- chore(deps): update bpf/bpf-next kernel by @scx-ci-bot in #2062
- scx_rustland_core/alloc: Remove redundant type by @EricccTaiwan in #2057
- scx_rustland_core/alloc: Refactor procfs access helpers by @EricccTaiwan in #2058
- scx_rustland_core/builder: Refactor file write guard by @EricccTaiwan in #2059
- scx_p2dq: Fix LLC id handling and refactor load balancing by @hodgesds in #2061
- scx_p2dq: Deprecate wakeup pick two load balancing by @hodgesds in #2063
- sdt_task: Avoid use-after-free after deleting task_storage by @EricccTaiwan in #2006
- scx_layered: Unify percpu kthread handling by @htejun in #2066
- scx_utils: add the current GPU performance state data. by @devnexen in #2064
- scx_wd40: Fix incorrect null check by @EricccTaiwan in #2065
- lib/arena: expand argument passing from userspace by @etsal in #2067
- chore(deps): update bpf/bpf-next kernel by @scx-ci-bot in #2068
- scx_utils: Refactor GPU insertion and perf state fallback by @EricccTaiwan in #2069
- lib/cpumask: move idle CPU selection helpers out of scx_wd40 by @etsal in #2071
- lib/topology: add user-provided ids to topology nodes by @etsal in #2072
- scxtop: Fix incorrect field assignment by @EricccTaiwan in #2074
- scx_wd40: use topology IDs by @etsal in #2073
- nix: remove nested attrset in kernels by @JakeHillion in #2077
- ci: disable p2dq on 6.12 by @JakeHillion in #2076
- sched/rust: Use local time for log timestamps by @EricccTaiwan in #2081
- scx_utils: netdev: Account for disabled NIC queues by @daidavid in #2080
- scx_p2dq: Misc cleanup by @hodgesds in #2082
- scx_layered: Implement LayerKind::Grouped::util_includes_open_cputime by @htejun in #2084
- scx_mitosis: sync cells from bpf by @dforsyth in #2083
- chore(deps): update stable/6_12 kernel by @scx-ci-bot in #2086
- chore(deps): update stable/linux-rolling-stable kernel by @scx-ci-bot in #2087
- scx_p2dq: Add affinitized LLC load by @hodgesds in #2090
- scx_layered: Unbreak layered_dispatch by @kkdwivedi in #2089
- chore(deps): update bpf/bpf-next kernel by @scx-ci-bot in #2091
- ci: build all kernels with nix before starting jobs by @JakeHillion in #2094
- ci: move list-integration-tests.py to separate file by @JakeHillion in #2095
- scx_p2dq: Allow direct dispatch of idle CPUs by @hodgesds in #2096
- scx_p2dq: removing redundant check by @yaakov-stein in #2097
- scx_mitosis: fix bpf verifier error by @josefbacik in #2099
- lib/cpumask: Add helpers for idle cpu selection by @etsal in #2102
- chore(deps): update bpf/bpf-next kernel by @scx-ci-bot in #2103
- Rework scx_flash by @arighi in #2092
- scx_flash: Refactor cpumask allocation code by @arighi in #2106
- lib/cpumask: Fix cmpxchg failure detection by @EricccTaiwan in #2104
- scx_p2dq: Fix vtime jumps by @hodgesds in #2111
- scx_p2dq: Fix vtime handling for nice tasks by @hodgesds in #2112
- compat: guard bpf_cpumask_populate behind __COMPAT macro by @etsal in #2108
- ci: add CI-Test-Kernel trailers by @JakeHillion in #2098
- scx_mitosis: Simplify Duration usage by @EricccTaiwan in #2100
- macros: add ifndef to all likely/unlikely definitions by @JakeHillion in #2113
- ci: add all-success job to simplify github branch rules by @JakeHillion in #2114
- scx_p2dq: remove unnecessary args by @yaakov-stein in #2117
- Refresh task domain if migrated to different CPU without going through ops.select_cpu() by @esot0 in #2119
- ci: fix update-kernels workflow for previous script changes by @JakeHillion in #2118
- chore(deps): update kernel versions by @scx-ci-bot in #2122
- chore(deps): update kernel versions by @scx-ci-bot in #2123
- scx_flash: Rework direct dispatch by @arighi in #2121
- Fixes for layered regressions by @kkdwivedi in #2120
- scx_p2dq: Add affinitized per CPU DSQs by @hodgesds in #2125
- scx_p2dq: Add tracing on select_cpu by @hodgesds in #2128
- chore(deps): update kernel versions by @scx-ci-bot in #2130
- chore(deps): update kernel versions by @scx-ci-bot in #2132
- chore(deps): update kernel versions by @scx-ci-bot in #2131
- scx_lavd/main: Improve error messages by @EricccTaiwan in #2107
- scx_lavd/power: Fix invalid ternary by @EricccTaiwan in #2109
- scx_flash: Always update task domain before proactive wakeup by @arighi in #2133
- scx_flash: Introduce --run-lag by @arighi in #2135
- scx_flash: Update help and small refactoring by @arighi in #2136
- scx_utils, scx_lavd: Improve detection of heterogeneous architectures (big/LITTLE). by @multics69 in #2134
- ci: fix kernel trailer detection in integration tests by @JakeHillion in #2127
- scx_utils: Tune the capacity gap threshold for correct detection of big/LITTLE. by @multics69 in #2137
- scx_layered: Collect layer LLC DSQ enqueues statistics by @kkdwivedi in #2129
- scx_utils: Avoid divide-by-zero when "PSS Support" is disabled. by @multics69 in #2138
- lib/bitmap: adding test_and_clear helper method by @yaakov-stein in #2126
- scx_flash: Prevent potential ops.enqueue() stall by @arighi in #2139
- README: add Discord server by @sirlucjan in #2143
- scx_mitosis: Use local time for log timestamps by @EricccTaiwan in #2101
- layered: have template layers act as regular layers when no cgroup by @likewhatevs in #2141
- README: Highlight #office-hours by @EricccTaiwan in #2144
- Update README.md by @htejun in #2146
- lib: remove scx_bpf_error calls and replace with bpf_printk by @etsal in #2124
- Update README.md by @htejun in #2148
- scx_chaos: Add stats interface for chaos injection metrics by @JakeHillion in #2142
- scx_layered: Replenish slice for protected layers by @kkdwivedi in #2147
- chore(deps): update bpf/bpf-next kernel by @scx-ci-bot in #2149
- chore(deps): update sched_ext/for-next kernel by @scx-ci-bot in #2150
- scx_p2dq: Optimize sync wakeup path by @hodgesds in #2151
- scx_p2dq: Special case dual socket wakeups by @hodgesds in #2152
- scx_chaos: Refactor stats_thread initialization using map() by @EricccTaiwan in #2154
- versions: Bump versions for v1.0.13 release by @htejun in #2156
New Contributors
- @charliechiou made their first contribution in #1876
- @yaakov-stein made their first contribution in #1945
- @CosmicBulb made their first contribution in #1992
- @daidavid made their first contribution in #2080
- @dforsyth made their first contribution in #2083
- @josefbacik made their first contribution in #2099
- @esot0 made their first contribution in #2119
Full Changelog: v1.0.12...v1.0.13