zswap – compcache, compressed swap for better performance

First, here is a link to article on compcache.


zswap is already in the kernel and you can see the documentation in the kernel documentation. Here is the name of the file if you need:

/usr/share/doc/kernel-doc-$(uname -r)/Documentation/vm/zswap.txt

Here is the overview, in case you do not want to install kernel-doc


Zswap is a lightweight compressed cache for swap pages. It takes pages that are
in the process of being swapped out and attempts to compress them into a
dynamically allocated RAM-based memory pool.  zswap basically trades CPU cycles
for potentially reduced swap I/O.  This trade-off can also result in a
significant performance improvement if reads from the compressed cache are
faster than reads from a swap device.

NOTE: Zswap is a new feature as of v3.11 and interacts heavily with memory
reclaim.  This interaction has not be fully explored on the large set of
potential configurations and workloads that exist.  For this reason, zswap
is a work in progress and should be considered experimental.

Some potential benefits:
* Desktop/laptop users with limited RAM capacities can mitigate the
    performance impact of swapping.
* Overcommitted guests that share a common I/O resource can
    dramatically reduce their swap I/O pressure, avoiding heavy handed I/O
    throttling by the hypervisor. This allows more work to get done with less
    impact to the guest workload and guests sharing the I/O subsystem
* Users with SSDs as swap devices can extend the life of the device by
    drastically reducing life-shortening writes.

Zswap evicts pages from compressed cache on an LRU basis to the backing swap
device when the compressed pool reaches it size limit.  This requirement had
been identified in prior community discussions.

To enabled zswap, the “enabled” attribute must be set to 1 at boot time.  e.g.


Enhanced by Zemanta

Kernel ata exception — found workaround.

I have been getting the below errors in my system for quite sometime now, I think since F9 or before that. The offending hardware is CD drive. I looked all around the net for a solution but did not find anything. Will keep looking to solve the problem. I found various solutions being suggested like adding noirq or nobiosirq or noacpi and such. None of this helped. So for now I am happy with turning off the haldaemon as soon as the system comes up. Problem: it takes lot of time to go down 🙁

Jan 29 01:53:02 amit kernel: ata5.00: exception Emask 0x0 SAct 0x0 SErr 0x0 action 0x6 frozen
Jan 29 01:53:02 amit kernel: ata5.00: cmd a0/00:00:00:00:00/00:00:00:00:00/a0 tag 0
Jan 29 01:53:02 amit kernel:         cdb 00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00
Jan 29 01:53:02 amit kernel:         res 40/00:02:00:08:00/00:00:00:00:00/b0 Emask 0x4 (timeout)
Jan 29 01:53:02 amit kernel: ata5.00: status: { DRDY }
Jan 29 01:53:02 amit kernel: ata5: soft resetting link
Jan 29 01:53:02 amit kernel: ata5.00: configured for PIO0
Jan 29 01:53:02 amit kernel: ata5.01: configured for UDMA/33
Jan 29 01:53:02 amit kernel: ata5: EH complete

Anyone knows the problem and has a solution, please reply.

Update (30 Jan 2009): If I stop the haldaemon then I do not see the error messages anymore.

Are you swapped? Increase the performance of Linux machine.

With the ever increasing cost of the Hardware, the amount of physical RAM available on the system is increasing day by day. For example, couple of years back, I had a system which was very high end Desktop with 256MB RAM and today I have a 2GB RAM Desktop. So, whats the point.

The Linux systems (right word should be kernel) are desiged to use both RAM and swap partition. Swap partition is a partition on Hard disk and is used mostly like RAM. Problem is that HDD access is always slower than RAM access and hence inherently, the system will work little slower even if you have enough RAM not to use swap. The term \”swappiness\” is used to determine how the kernel should try to seam-balance between the use of RAM and swap. By default, most of the distro\’s have a swappiness of 60. A higher value of swappiness means that the RAM will be swapped out faster.

There are two ways to look at the swappiness:

1) If the user has a higher swappiness then the used memory will be swapped faster to the swap and thus free\’ing the RAM for other useful purposes.

2) A lower value of swappiness would mean that bloaty applications will not be swapped and thus when the user returns to the application, the application would load faster or rather look faster as there will be no swapping from the swap to the RAM.

I personally keep the swappiness to a value of 100 in the Desktop. But then, anyway I kill firefox as soon as I am done and restart when required.

If you see that the RAM is underutilized or feel that the system performance is not that good then you can tickle with this setting and set it to 10-15. How to do it :

Login as roo (\”su -\”)

echo 15 > /proc/sys/vm/swappiness

This will take effect immediately, but if you want to change this value permanently then you can do this(again as root):

echo \”sys.vm.swappiness = 10\” > /etc/sysctl.conf

So play with your swappiness 🙂

Enhanced by Zemanta