Differences
This shows you the differences between two versions of the page.
| Both sides previous revision Previous revision Next revision | Previous revision | ||
| summerofcode2019projects:virtualmemorycompression [2019/05/09 02:38] – PaavoEinariKaipila | summerofcode2019projects:virtualmemorycompression [2019/06/23 20:37] (current) – PaavoEinariKaipila | ||
|---|---|---|---|
| Line 1: | Line 1: | ||
| ====== Virtual Memory Compression ====== | ====== Virtual Memory Compression ====== | ||
| * Student: [[/ | * Student: [[/ | ||
| - | * Mentors: [[/ | + | * Mentors: [[/ |
| + | * [[https:// | ||
| - | ===== Introuduction | + | ===== Introduction |
| Virtual memory compression is a memory management technique implemented by multiple operating systems ranging from Windows to Darwin. Depending on the implementation, | Virtual memory compression is a memory management technique implemented by multiple operating systems ranging from Windows to Darwin. Depending on the implementation, | ||
| Line 23: | Line 24: | ||
| ==== Primary goal: “zram for FreeBSD” ==== | ==== Primary goal: “zram for FreeBSD” ==== | ||
| - | The primary goal is to implement a compressed in-memory disk that can be utilized as a swap storage. The current plan is to integrate it to existing md(4) and a corresponding userland configuration tool mdconfig(8). Lz4 will be the default algorithm due to its good speed/ | + | The primary goal is to implement a compressed in-memory disk that can be utilized as a swap storage. The current plan is to integrate it to existing md(4) and the corresponding userland configuration tool mdconfig(8). Lz4 will be the default algorithm due to its good speed/ |
| ==== Secondary goal: “zswap for FreeBSD” ==== | ==== Secondary goal: “zswap for FreeBSD” ==== | ||
| - | A secondary goal (only once the first one is considered ready) is to implement a compressed cache that sits in front of a physical swap device. I am unsure how far I am able to go with this, since it involves some fairly complex parts, such as finding compressed page pairs (or groups) that fit nicely to a single physical block on the disk and are likely to be fetched at the same time. | + | A secondary goal (only once the first one is considered ready and there' |
| ===== Milestones ===== | ===== Milestones ===== | ||
| - | * TBA | + | |
| + | * soft start, getting to know my mentors | ||
| + | * getting familiar with DTrace as I believe it will be useful | ||
| + | * a script for building the system, installing it into an image and launching a VM in one go ✔ done | ||
| + | * May 27 | ||
| + | * Coding officially starts. From this day forward, I will spend about 7-8 hours per day on the project. | ||
| + | * June 21 - 23 | ||
| + | * Finnish midsummer (juhannus, a national holiday). I’m taking few days off. | ||
| + | * By mid-evaluations June 24 - 28 | ||
| + | * A compressed in-memory backend for md(4) | ||
| + | * Required new options for mdconfig(8) | ||
| + | * By final evaluations August 19 - 26 | ||
| + | * Testing, stabilization and benchmarking. Also on non-X86 systems. | ||
| + | * trying adaptive compression | ||
| + | * an rc script for configuring a compressed memory disk as a swap storage | ||
| + | * a userland utility for creating temporary file systems with compressed in-memory storage, probably as part of mdmfs(8) | ||
| + | * documentation | ||
| + | * (possibly) a compressed cache in front of another storage device | ||
| ===== Development and testing ===== | ===== Development and testing ===== | ||
| - | Development and testing will happen in a 13.0-CURRENT system that I already have inside a bhyve virtual machine. As the project progresses, testing will gradually move to physical hardware that I have at disposal. That includes two [[/ThinkPads|ThinkPads]] (X230 and T480) and two Raspberry Pis (2 and 3). Testing will consist of real-world applications, | + | Development and testing will happen in a 13.0-CURRENT system that I already have inside a bhyve virtual machine. As the project progresses, testing will gradually move to physical hardware that I have at disposal. That includes two [[/CategoryThinkpad|ThinkPad]]s (X230 and T480) and two Raspberry Pis (2 and 3). Testing will consist of real-world applications, |
| ===== The Code ===== | ===== The Code ===== | ||
| - | + | https:// | |
| - | * TBA | + | |