Movatterモバイル変換


[0]ホーム

URL:


Skip to content

Navigation Menu

Search code, repositories, users, issues, pull requests...

Provide feedback

We read every piece of feedback, and take your input very seriously.

Saved searches

Use saved searches to filter your results more quickly

Sign up

Project 2 of SJTU CS356 Operating System Projects

License

NotificationsYou must be signed in to change notification settings

skyzh/oom_killer

Repository files navigation

TL;DR

First of all, you need to patch the original kernel. Here I provide 2 ways.

  1. Usekernel_space/patch.diff. Apply it on goldfish-3.4 from AOSP project.
  2. Copy all files fromkernel_space/archive.zip. They are kept to have the same structure as in Linux kernel.

Then, you may build and run the kernel. After the emulator is boot with new kernel, use Makefile in user_land to run tests.

make notifier# run user-space daemonmaketest

This will automatically build test program, push it to/data/local, and run it with 10070 user.

Project Structure

.├── kernel_space                files modified in Linux Kernel│   ├── archive.zip             all modified files in original folder structure│   ├── patch.diff              patch file, should be applied on git repo│   └── patch.sh                script used to generate patch file└── user_land    ├── Makefile    ├── benchmark               benchmark program    │   ├── jni    │   │   ├── Android.mk    │   │   └── benchmark.c    │   ├── out    │   │   └── dummy.txt    │   └── result              benchmark raw result    │       ├── goldfish_3.4.out    │       ├── kernel_log.txt    │       ├── kernel_log_notifier.txt    │       ├── kernel_log_timer.txt    │       ├── kernel_log_trivial.txt    │       ├── oom_killer_disabled.out    │       ├── oom_killer_enabled.out    │       ├── oom_killer_trivial.out    │       ├── oom_killer_with_limit.out    │       └── original.out    ├── benchmark_analysis      benchmark analysis scripts    │   ├── analysis.Rmd    │   ├── analysis_overcommit.Rmd    │   ├── kernel_log_parser.py    │   ├── parse.sh    │   ├── parser.py    │   ├── result.csv    │   └── result_overcommit.csv    ├── common.h                contains all syscall wrapper and tmalloc    ├── mm_get_limit            program to get all limit in system    │   └── jni    │       ├── Android.mk    │       └── mm_get_limit.c    ├── mm_notifier             the user-space daemon    │   └── jni    │       ├── Android.mk    │       ├── Application.mk    │       └── mm_notifier.cpp    ├── mm_set_limit            program to set a user limit    │   └── jni    │       ├── Android.mk    │       └── mm_set_limit.c    ├── project2_test           test program provided by TA    │   └── jni    │       ├── Android.mk    │       └── project2_test.c    └── trace                   debug scripts for event tracing        ├── Makefile        ├── enable_trace.sh        └── test.cpp

Acknowledgement

The design of this OOM killer is inspired by a lot of things. This includes:

  1. Linux kernel documentation. In that, I find a lot of tools useful for tracing.
  2. Linux community. Some un-merged patches inspired me of OOM design.
  3. My classmates. When discussing about and solving problems they encountered,I also came up with some new ideas. Thanks Zefu Wang, Bugen Zhao, and Yimin Zhaofor their open-minded sharing.

About

Project 2 of SJTU CS356 Operating System Projects

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

[8]ページ先頭

©2009-2025 Movatter.jp