Re: netbsd version of compressed caching
Hubert Feyrer <[email protected]> Thu, 11 Dec 2008 13:12:06 +0100 (CET)
| Newsgroups | gmane.os.netbsd.devel.embedded,gmane.os.netbsd.devel.kernel |
|---|---|
| Message-ID | <[email protected]> |
[added tech-kern] LKM/module or not shouldn't really be a question for a pseudo device, AFAIU the new modules framework will allow to easily compile code into the kernel or use as a module. I wouldn't worry too much there. About compressino algorithm, have a look at the vnd(4) driver, which has an option to use images that are compressed with in the "cloop" format, which internally uses the gzip algorithm (IIRC). I think the most interesting part will be management of "free" space, as you can't assume the compressed blocks to be of a fixed size - if you replace one (compressed) "page" with another one, the new one may not fit as it's too big. vnd(4) avoids this by insisting that compressed images need to be read-only (and compressed in userland, see vndcompress(1)). - Hubert On Wed, 10 Dec 2008, Selcuk AYA wrote: > Hi, > I found about the compressed caching project on the netbsd projects > page. The page shows tech-embed mailing list as the mailing list to > contact. I have no NETBSD experience but I have been poking around the > code to get an understanding of uvm interfaces and pseudo drivers and > I think I can get the job done. I have also looked at the Linux > implementation of compressed caching. I belive there are three ways to > implement compressed caching in NETBSD: > > a) as a pseudo device inside the kernel. This pesuodo device would be > used as a swap partition. Behind the scenes, it would compress pages > which need to be swapped out and store them in memory. > b) similar to a) but this would be a pseudo driver implemented as an > loadable kernel module. > > For these two options, I found out that md.c (ram disk driver) in the > kernel serves as a good starting point to write the pseudo driver. > > c)Inside the kernel, swap pager would need to be made aware of > compressed caching. I imagine swap pager keeps a map to keep track of > where swapped out pages are on the swap device. Some of these entries > would point to in memory compressed pages. > > For all these options, compressed caching will have to manage its own > memory and keep track of variable sized chunks (I do not have a > detailed idea about this yet). I would prefer to go with options a) or > b) as I do not see a an advantage of making the swap pager aware of > compressed caching. Would an lkm be OK for an embedded system? > > > Being new to the open source world, I am worried about the licensing > issues. Linux compressed caching uses LZO algorithm for compression. > LZO is released under GPL so I guess we cannot use it in NETBSD. But > there are are other alternatives which do not bear the sign of GPL > (http://www.cs.utexas.edu/users/oops/compressed-caching/index.html) . > If I use a non GPL licenced compress/decompress algorithm and > re-implement compressed caching as above for NETBSD, do I avoid > licencing issues? > > > thanks. >