{"id":28573460,"url":"https://github.com/plasma-umass/redline","last_synced_at":"2026-01-31T05:31:16.683Z","repository":{"id":145138057,"uuid":"86850398","full_name":"plasma-umass/redline","owner":"plasma-umass","description":"Redline OS (OSDI 2008)","archived":false,"fork":false,"pushed_at":"2017-03-31T18:53:20.000Z","size":479,"stargazers_count":0,"open_issues_count":0,"forks_count":0,"subscribers_count":1,"default_branch":"master","last_synced_at":"2025-06-10T21:18:17.486Z","etag":null,"topics":["operating-system"],"latest_commit_sha":null,"homepage":"","language":null,"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/plasma-umass.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,"zenodo":null}},"created_at":"2017-03-31T18:48:02.000Z","updated_at":"2017-03-31T18:53:53.000Z","dependencies_parsed_at":"2023-07-21T20:32:03.636Z","dependency_job_id":null,"html_url":"https://github.com/plasma-umass/redline","commit_stats":null,"previous_names":[],"tags_count":0,"template":false,"template_full_name":null,"purl":"pkg:github/plasma-umass/redline","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/plasma-umass%2Fredline","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/plasma-umass%2Fredline/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/plasma-umass%2Fredline/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/plasma-umass%2Fredline/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/plasma-umass","download_url":"https://codeload.github.com/plasma-umass/redline/tar.gz/refs/heads/master","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/plasma-umass%2Fredline/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":28930361,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-01-31T04:05:25.756Z","status":"ssl_error","status_checked_at":"2026-01-31T04:02:35.005Z","response_time":128,"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":["operating-system"],"created_at":"2025-06-10T21:18:11.746Z","updated_at":"2026-01-31T05:31:16.678Z","avatar_url":"https://github.com/plasma-umass.png","language":null,"funding_links":[],"categories":[],"sub_categories":[],"readme":"# redline\nRedline OS (OSDI 2008)\n\n**\u003cfont size=\"4\"\u003e\u003ca name=\"Introduction\"\u003eIntroduction:\u003c/a\u003e\u003c/font\u003e**  \nRedline is an operating system kernel designed to ensure responsiveness even when the system is extremely overloaded.  \n  **\u003cfont size=\"4\"\u003e\u003ca name=\"Downloads\"\u003eDownloads:\u003c/a\u003e\u003c/font\u003e**  \nCurrently, Redline works on the \u003cfont color=\"#0000ff\"\u003eIntel i386\u003c/font\u003e platform and supports HyperThreading and SMP, but not NUMA. Please read the instructions carefully when you try out the Redline kernel. While Redline has been tested, you should backup any important things on your machine just in case.\n\n*   CFS-V20.3 patch for kernel 2.6.22.5: [here](http://www.cs.umass.edu/~emery/redline/Code/cfs-2.6.22.5-v20.3.tar.gz)\n*   Redline-V1.6 patch against CFS-V20.3: [here](http://www.cs.umass.edu/~emery/redline/Code/redline-v1.6-cfs.tar.gz)\n*   Redline-V1.6 patch against kernel 2.6.22.5: [here](http://www.cs.umass.edu/~emery/redline/Code/redline-v1.6-vanilla.tar.gz)\n*   SpecTools: [here](http://www.cs.umass.edu/~emery/redline/Code/spectools.tar.gz)\n*   Toy programs for testing: [here](http://www.cs.umass.edu/~emery/redline/Code/toys.tar.gz)\n\n**\u003cfont size=\"4\"\u003e\u003ca name=\"Instructions\"\u003eInstructions:\u003c/a\u003e\u003c/font\u003e**  \nThe Redline kernel uses the Linux kernel 2.6.22.5 as a base, combined with Ingo Molnar's new CFS scheduler which was merged into Linux kernel mainstream summer 2007\\. We started our implementation before the merge happened. The Redline kernel adds a new scheduling class that uses EDF with eligibility control in CPU scheduler, modifies virtual memory manager (VMM) to protect pages used by interactive tasks. It also modifies several layers in the system related to I/O management, such as page writeback, the file system, journaling, and the I/O scheduler. All these modifications aim to maintain responsiveness even when the system is overloaded (in terms of CPU, memory or I/O bandwidth).\n\n*   Kernel Installation  \n    \u003cfont color=\"#0000ff\"\u003eStep 1:\u003c/font\u003e download Linux kernel 2.6.22.5 [here](http://www.kernel.org), then download CFS V20.3 patch and Redline-V1.6 from [Downloads](index.html#Downloads) section above. Extract kernel source into a local directory, say /\u003cfont face=\"Courier\"\u003eyour_source\u003c/font\u003e/, then apply patches using following commands:  \n\n    \u003cfont face=\"Courier\"\u003e                $cd your_source  \n                    $patch -p1 \u003c cfs-v20.3.patch  \n                    $patch -p1 \u003c redline-v1.t.patch\u003c/font\u003e  \n    \u003cfont color=\"#0000ff\"\u003eStep 2:\u003c/font\u003e compile your kernel. Here is an [sample configuration file](http://www.cs.umass.edu/~emery/redline/Code/redline.sample.config) I used.  \n\n    \u003cfont face=\"Courier\"\u003e                $make xconfig or make menuconfig  \n                    $make  \n                    $make modules_install install  \n    \u003c/font\u003e  \n    \u003cfont color=\"#ff0000\"\u003eNOTE:\u003c/font\u003e Redline currently only works on Intel i386 platforms. However, Redline implementation does not touch any architecture-specific part, except adding two system calls to support setting and getting specifications for applications. Adding proper system calls into other architectures in the Linux kernel should also make Redline work.  \n\n    \u003cfont color=\"#ff0000\"\u003eNOTE:\u003c/font\u003e You may have to disable the following options in your kernel configuration file, even though by default they are disabled:  \n    \u003cfont face=\"Courier\"\u003e                CONFIG_NUMA        \u003c/font\u003e/* For NUMA */\u003cfont face=\"Courier\"\u003e  \n                    CONFIG_MC          \u003c/font\u003e/* For Multi-Core */\u003cfont face=\"Courier\"\u003eCONFIG_RT_MUTEXES\u003c/font\u003e /* For Mutex Priority Inheritance */\u003cfont face=\"Courier\"\u003e  \n                    CONFIG_NOMMU       \u003c/font\u003e/* no MMU, for systems that have no VM */\n*   System Setup using SpecTools  \n    Redline is specification-driven, so you need to setup specifications for your system, and also manage them. SpecTools is a package that allows you to do these tasks. It contains a specification table, several binary tools for setting/getting specifications, and several scripts. For details, please refer to README.SPECTOOLS in the downloaded package.  \n\n    \u003cfont color=\"#0000ff\"\u003eStep 1:\u003c/font\u003e Before you can compile SpecTools, you need first add necessary system call interface, because Redline adds two system calls. You need to  \n            replace: \u003cfont face=\"Courier\"\u003e/usr/include/asm/unistd.h \u003c/font\u003e  (or whatever suitable file in your system)  \n            with    : \u003cfont face=\"Courier\"\u003e/include/asm-i386/unistd.h\u003c/font\u003e (in your downloaded kernel source above)  \n\n    \u003cfont color=\"#0000ff\"\u003eStep 2:\u003c/font\u003e Download SpecTools from the [Downloads](index.html#Downloads) section above, and then decompress it using  \n\n    \u003cfont face=\"Courier\"\u003e                 $tar -zxvf spectools.tar.gz  \n                     $make  \n                     $make install\u003c/font\u003e       /* You need have root privilege to do this */This will setup a directory \u003cfont face=\"Courier\"\u003e/etc/spec\u003c/font\u003e in your system, and generates proper specification files in that directory from \u003cfont face=\"Courier\"\u003especification.tab\u003c/font\u003e. You can do this manually using \u003cfont face=\"Courier\"\u003eupdate_spec.pl\u003c/font\u003e script in the package. It also installs two binaries: \u003cfont face=\"Courier\"\u003eset_pid_spec\u003c/font\u003e and \u003cfont face=\"Courier\"\u003eget_pid_spec\u003c/font\u003e  \n\n    \u003cfont color=\"#0000ff\"\u003eStep 3:\u003c/font\u003e The last thing you need to do is add one line in your \u003cfont face=\"Courier\"\u003e/etc/rc.d/rc.local\u003c/font\u003e  \n                             \u003cfont face=\"Courier\"\u003e/etc/spec/kernelthread_specfix.pl\u003c/font\u003e  \n    So that your system invokes this script after it boots up. This script will set specifications for kernel threads, which do not call \u003cfont face=\"Courier\"\u003edo_execve()\u003c/font\u003e at all.  \n\n    \u003cfont color=\"#ff0000\"\u003eNOTE:\u003c/font\u003e The sample system specification provided by SpecTools, i.e. \u003cfont face=\"Courier\"\u003especification.tab\u003c/font\u003e, is configured for \u003cfont color=\"#0000ff\"\u003eKDE\u003c/font\u003e desktop environment. Currently, Redline does not include specifications for GNOME. Most GUI applications currently inherit a default specification from KDE, when \u003cfont face=\"Courier\"\u003ekdeinit\u003c/font\u003e fork and exec a new application. _Firefox_, _mplayer_, _gmplayer_, _vim_, _gvim_ have their own specifications, either because they need more than the default or because they are often launched from a shell. You can provide your own specification for an application if necessary; please see README files in SpecTools package for how to do it.  \n\n    Now, you are ready to reboot your system with Redline kernel. Enjoy!  \n\n*   Setting Specification:  \n    Please read README.SPECTOOLS and README.SPECIFICATIONS to see how to provide specification for applications\n\n**\u003cfont size=\"4\"\u003e\u003ca name=\"FAQ\"\u003eFAQ:\u003c/a\u003e\u003c/font\u003e**  \nIf you have any questions or suggestions, please contact Ting Yang at tingy@cs.umass.edu or Emery Berger at emery@cs.umass.edu.\n\n\u003csmall\u003eThis material is based upon work supported by the National Science Foundation under CAREER Award CNS-0347339 and CNS-0615211\\. Any opinions, findings, and conclusions or recommendations expressed in this material are those of the author(s) and do not necessarily reflect the views of the National Science Foundation.\u003c/small\u003e","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fplasma-umass%2Fredline","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fplasma-umass%2Fredline","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fplasma-umass%2Fredline/lists"}