{"id":16641932,"url":"https://github.com/ptr1337/archlinux-kernel-builder","last_synced_at":"2026-04-25T11:33:20.491Z","repository":{"id":119298805,"uuid":"355858726","full_name":"ptr1337/archlinux-kernel-builder","owner":"ptr1337","description":"Linux kernel build for Archlinux with a patch set by TK-Glitch, Piotr Górski, Hamad Al Marri, Con Kolivas and Alfred Chen.","archived":false,"fork":false,"pushed_at":"2021-04-16T17:39:17.000Z","size":403,"stargazers_count":2,"open_issues_count":0,"forks_count":0,"subscribers_count":0,"default_branch":"main","last_synced_at":"2025-06-11T19:40:34.384Z","etag":null,"topics":["archlinux","bmq","cacule","gcc","kernel","lllvm","pds"],"latest_commit_sha":null,"homepage":"","language":"Shell","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":null,"status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/ptr1337.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":null,"code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null}},"created_at":"2021-04-08T10:19:05.000Z","updated_at":"2022-01-09T18:37:56.000Z","dependencies_parsed_at":null,"dependency_job_id":"b9433bb7-c112-4510-bd53-a1b621b84f2d","html_url":"https://github.com/ptr1337/archlinux-kernel-builder","commit_stats":null,"previous_names":[],"tags_count":0,"template":false,"template_full_name":null,"purl":"pkg:github/ptr1337/archlinux-kernel-builder","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/ptr1337%2Farchlinux-kernel-builder","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/ptr1337%2Farchlinux-kernel-builder/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/ptr1337%2Farchlinux-kernel-builder/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/ptr1337%2Farchlinux-kernel-builder/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/ptr1337","download_url":"https://codeload.github.com/ptr1337/archlinux-kernel-builder/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/ptr1337%2Farchlinux-kernel-builder/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":32261115,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-04-25T09:15:33.318Z","status":"ssl_error","status_checked_at":"2026-04-25T09:15:31.997Z","response_time":59,"last_error":"SSL_read: unexpected eof while reading","robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":false,"can_crawl_api":true,"host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["archlinux","bmq","cacule","gcc","kernel","lllvm","pds"],"created_at":"2024-10-12T07:48:18.086Z","updated_at":"2026-04-25T11:33:20.476Z","avatar_url":"https://github.com/ptr1337.png","language":"Shell","funding_links":[],"categories":[],"sub_categories":[],"readme":"# Linux\n\nLinux kernel build for Archlinux with a patch set by TK-Glitch, Piotr Górski, Hamad Al Marri, Con Kolivas and Alfred Chen.\n\n# Version\n\n### Linux kernel\n\n- 5.11.15\n\n# Build\n\n### Build Linux kernel\n\n    git clone https://github.com/kevall474/Linux.git\n    cd Linux\n    env _cpu_sched=(1,2,3,4,5 or 6) _compiler=(1 or 2) makepkg -s\n\n# Build variables\n\n### _cpu_sched\n\n- Will add a CPU Scheduler if you want :\n\n        1 : MuQSS by Con Kolivas\n        2 : BMQ by Alfred Chen\n        3 : PDS by Alfred Chen\n        4 : CacULE by Hamad Al Marri\n        5 : UPDS by TK-Glitch\n        6 : CacULE-RDB by Hamad Al Marri\n\nLeave this variable empty if you don't want to add a CPU Scheduler.\n\n### _compiler\n\n- Will set compiler to build the kernel :\n\n        1 : GCC\n        2 : CLANG+LLVM\n\nIf not set it will build with GCC by default.\n\n# Troubleshooting\n\n### The system isn't booting with the compiled kernel used a custom llvm/clang version\n\n- If you're compiling with llvm-rc or llvm-git be sure to recompile the mesa-* lib32-mesa-* packages against it.\n- Systems with intel/nvidia graphics just need to compile them with env _compiler=(1 or 2) makepkg -s | _compiler=1 ==\u003e GCC  _compiler=2 ==\u003e CLANG\n- Systems with AMD graphics need to compile with env _llvm=y _compiler=(1 or 2) makepkg -s | _compiler=1 ==\u003e GCC  _compiler=2 ==\u003e CLANG | _llvm=y is optional. It's to enable LLVM by default since ACO is the default shader compiler.\n- After compiling install both packages with sudo pacman -U mesa-*.pkg.zst lib32-mesa-*.pkg.zst\n\nYou will find the following packages here:\n- https://github.com/kevall474/LLVM\n- https://github.com/kevall474/Mesa\n\n\n# CPU Scheduler\n\n## MuQSS CPU Scheduler\n\nMuQSS - The Multiple Queue Skiplist Scheduler by Con Kolivas.\n\nMuQSS is a per-cpu runqueue variant of the original BFS scheduler with\none 8 level skiplist per runqueue, and fine grained locking for much more\nscalability.\n\nThe goal of the Multiple Queue Skiplist Scheduler, referred to as MuQSS from\nhere on (pronounced mux) is to completely do away with the complex designs of\nthe past for the cpu process scheduler and instead implement one that is very\nsimple in basic design. The main focus of MuQSS is to achieve excellent desktop\ninteractivity and responsiveness without heuristics and tuning knobs that are\ndifficult to understand, impossible to model and predict the effect of, and when\ntuned to one workload cause massive detriment to another, while still being\nscalable to many CPUs and processes.\n\nMuQSS is best described as per-cpu multiple runqueue, O(log n) insertion, O(1)\nlookup, earliest effective virtual deadline first tickless design, loosely based\non EEVDF (earliest eligible virtual deadline first) and my previous Staircase\nDeadline scheduler, and evolved from the single runqueue O(n) BFS scheduler.\nEach component shall be described in order to understand the significance of,\nand reasoning for it.\n\n## BMQ CPU Scheduler\n\nBitMap Queue CPU scheduler, referred to as BMQ from here on, is an evolution\nof previous Priority and Deadline based Skiplist multiple queue scheduler(PDS),\nand inspired by Zircon scheduler. The goal of it is to keep the scheduler code\nsimple, while efficiency and scalable for interactive tasks, such as desktop,\nmovie playback and gaming etc.\n\nBMQ use per CPU run queue design, each CPU(logical) has it's own run queue,\neach CPU is responsible for scheduling the tasks that are putting into it's\nrun queue.\n\nThe run queue is a set of priority queues. Note that these queues are fifo\nqueue for non-rt tasks or priority queue for rt tasks in data structure. See\nBitMap Queue below for details. BMQ is optimized for non-rt tasks in the fact\nthat most applications are non-rt tasks. No matter the queue is fifo or\npriority, In each queue is an ordered list of runnable tasks awaiting execution\nand the data structures are the same. When it is time for a new task to run,\nthe scheduler simply looks the lowest numbered queueue that contains a task,\nand runs the first task from the head of that queue. And per CPU idle task is\nalso in the run queue, so the scheduler can always find a task to run on from\nits run queue.\n\nEach task will assigned the same timeslice(default 4ms) when it is picked to\nstart running. Task will be reinserted at the end of the appropriate priority\nqueue when it uses its whole timeslice. When the scheduler selects a new task\nfrom the priority queue it sets the CPU's preemption timer for the remainder of\nthe previous timeslice. When that timer fires the scheduler will stop execution\non that task, select another task and start over again.\n\nIf a task blocks waiting for a shared resource then it's taken out of its\npriority queue and is placed in a wait queue for the shared resource. When it\nis unblocked it will be reinserted in the appropriate priority queue of an\neligible CPU.\n\nBMQ supports DEADLINE, FIFO, RR, NORMAL, BATCH and IDLE task policy like the\nmainline CFS scheduler. But BMQ is heavy optimized for non-rt task, that's\nNORMAL/BATCH/IDLE policy tasks.\n\n## PDS CPU Scheduler\n\nPriority and Deadline based Skiplist multiple queue scheduler, referred to as\nPDS from here on, is developed upon the enhancement patchset VRQ(Variable Run\nQueue) for BFS(Brain Fuck Scheduler by Con Kolivas). PDS inherits the existing\ndesign from VRQ and inspired by the introduction of skiplist data structure\nto the scheduler by Con Kolivas. However, PDS is different from MuQSS(Multiple\nQueue Skiplist Scheduler, the successor after BFS) in many ways.\n\nPDS is designed to make the cpu process scheduler code to be simple, but while\nefficiency and scalable. Be Simple, the scheduler code will be easy to be read\nand the behavious of scheduler will be easy to predict. Be efficiency, the\nscheduler shall be well balance the thoughput performance and task interactivity\nat the same time for different properties the tasks behave. Be scalable, the\nperformance of the scheduler should be in good shape with the glowing of\nworkload or with the growing of the cpu numbers.\n\nPDS is described as a multiple run queues cpu scheduler. Each cpu has its own\nrun queue. A heavry customized skiplist is used as the backend data structure\nof the cpu run queue. Tasks in run queue is sorted by priority then virtual\ndeadline(simplfy to just deadline from here on). In PDS, balance action among\nrun queues are kept as less as possible to reduce the migration cost. Cpumask\ndata structure is widely used in cpu affinity checking and cpu preemption/\nselection to make PDS scalable with increasing cpu number.\n\n## CacULE CPU Scheduler\n\n![cacule_sched](https://user-images.githubusercontent.com/68618182/103179297-92ac0100-4858-11eb-83aa-8992f33d67f8.png)\n\nCacULE is a newer version of Cachy. The CacULE CPU scheduler is based on interactivity score mechanism.\nThe interactivity score is inspired by the ULE scheduler (FreeBSD scheduler).\n\nAbout CacULE Scheduler\n\n- Each CPU has its own runqueue.\n- NORMAL runqueue is a linked list of sched_entities (instead of RB-Tree).\n- RT and other runqueues are just the same as the CFS's.\n- Wake up tasks preempt currently running tasks if its interactivity score value is higher.\n\n# Update GRUB\n\n    sudo grub-mkconfig -o /boot/grub/grub.cfg\n\n# Contact info\n\nkevall474@tuta.io if you have any problems or bugs report.\n\n# Info\n\nYou can refer to this Archlinux page that have lots of useful information to build the kernel and debugging if you have some issues https://wiki.archlinux.org/index.php/Kernel/Traditional_compilation\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fptr1337%2Farchlinux-kernel-builder","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fptr1337%2Farchlinux-kernel-builder","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fptr1337%2Farchlinux-kernel-builder/lists"}