We've had a discussion in the Linaro storage team (Saugata, Venkat and me,
with Luca joining in on the discussion) about swapping to flash based media
such as eMMC. This is a summary of what we found and what we think should
be done. If people agree that this is a good idea, we can start working
on it.
The basic problem is that Linux without swap is sort of crippled and some
things either don't work at all (hibernate) or not as efficient as they
should (e.g. tmpfs). At the same time, the swap code seems to be rather
inappropriate for the algorithms used in most flash media today, causing
system performance to suffer drastically, and wearing out the flash hardware
much faster than necessary. In order to change that, we would be
implementing the following changes:
1) Try to swap out multiple pages at once, in a single write request. My
reading of the current code is that we always send pages one by one to
the swap device, while most flash devices have an optimum write size of
32 or 64 kb and some require an alignment of more than a page. Ideally
we would try to write an aligned 64 kb block all the time. Writing aligned
64 kb chunks often gives us ten times the throughput of linear 4kb writes,
and going beyond 64 kb usually does not give any better performance.
2) Make variable sized swap clusters. Right now, the swap space is
organized in clusters of 256 pages (1MB), which is less than the typical
erase block size of 4 or 8 MB. We should try to make the swap cluster
aligned to erase blocks and have the size match to avoid garbage collection
in the drive. The cluster size would typically be set by mkswap as a new
option and interpreted at swapon time.
3) As Luca points out, some eMMC media would benefit significantly from
having discard requests issued for every page that gets freed from
the swap cache, rather than at the time just before we reuse a swap
cluster. This would probably have to become a configurable option
as well, to avoid the overhead of sending the discard requests on
media that don't benefit from this.
Does this all sound appropriate for the Linux memory management people?
Also, does this sound useful to the Android developers? Would you
start using swap if we make it perform well and not destroy the drives?
Finally, does this plan match up with the capabilities of the
various eMMC devices? I know more about SD and USB devices and
I'm quite convinced that it would help there, but eMMC can be
more like an SSD in some ways, and the current code should be fine
for real SSDs.
Arnd
[ Yeah OK... I'm really bad with this stuff. ]
January 23 to FEbruary 03
- More on-going study of the standalone b.L switcher code.
- Discussion with Le.chi Thu, Paul Larson and others about big.LITTLE
switcher testing requirements.
- Involved in the review cycle for a patch about the new generic ioremap
optimization from Pawel Moll which turned out to be bad and needed
a subsequent revert.
- Obtaining and setting up the b.L Fast Model license.
- Review of some RCU changes pushed down the platform idle code path by Paul E.
McKenney which I ended up NAKing.
- Review of a patch from Stephen Boyd to disable preemption when reading
CCSIDR on ARMv7 to which I suggested a simpler alternative.
- Review of the initial test plan for the big.LITTLE switcher.
- REview of the SA11x0 cleanups from RMK.
- Investigation and prodding sent to Andrew Lunn for fixing a few Kirkwood
breakages from recent consolidation changes.
- More design discussions around b.L switcher with people from ARM Ltd,
notably Robin Randhawa.
- Preparing for Linaro Connect.
February 06 to 10
- Attending Linaro Connect.
- REview of Rob Herring's series cleaning up and removing IRQ and
FIQ related macros from the kernel.
- Wrote an article about big.LITTLE switcher for LWN.
- REview of Marc Zyngier's series to add per SoC SMP and CPU hotplug
operations.
- Quickstart session with Dave Martin to run the ARM Fast Model for b.L.
February 13 to 24
- Refinement to my LWN article about b.L before publication.
- Review of a patch series preparing the kernel for being entered in hypervisor
mode by Dave Martin.
- Discussion (on IRC) between Dave Martin and myself about design changes
brought to the in-kernel b.L switcher.
- Start experimenting with the b.L fast model.
- Read and digested various documents about the ARM virtualization,
the GIC, etc.
- Produced some b.L project status to help project management transition
from Usman to Mounir.
- Posted a patch to add support for early console output via semihosting.
- Wrote the first part of the big.LITTLE write-up for the monthly member
report (Paul McKenney did the second part).
February 27 to March 02
- Away on vacation.
March 05 to 16
- Review of the initial Kirkwood conversion to FDT by jason(a)lakedaemon.net.
- Review of a patch series removing most instances of io.h by Rob Herring.
- Comments/suggestions on how to deal with unresponsive maintainers,
prompted by Amit Kucheria.
- Review of a patch by Stephen Warren to generalize u-Boot's uImage
wrapping in the kernel build.
- More experiments with the b.L software model, attempting to boot
a 8-core SMP system, running into cross cluster cache coherency problems.
Finally get it to boot, thanks to the ARM guys who provided the missing
clue.
- Look at the multi-cluster aware boot protocol patches by Lorenzo
Pieralisi. Some of it might be directly useful for the b.L switcher.
- Review of Dave Martin's patch series to facilitate custom opcode
injection.
- Improved a patch I posted months ago to remove the debugging restrictions
inside the devicemaps_init() function and pushed upstream. REcent changes
to the kernel are making this patch very useful for people to debug
their own kernel.
- Quick review of the Cortex-M3 support by Uwe Kleine-König.
- Moved to the arm-soc tree to implement the in-kernel switcher as it
contains everything to boot a vexpress config with device tree on the
software model.
Nicolas
Hi Eric,
while testing the Quick Start Board, I quickly tried several kernel
built from git://git.linaro.org/bsp/freescale/linux-linaro.git
- lt-3.2-imx5 : needs some fixes to build, boots but X fails to run
(with 11.09.01 BSP's userland on the VGA output)
- lt-3.2-imx6: needs some fixes to build, fails to boot
- lt-3.1-2011.12: don't remember the result
- rel_imx_2.6.38_12.01.01 : fails to boot
I can provide log & more details for each configuration later if needed.
The instructions on the Wiki
( https://wiki.linaro.org/Boards/MX53QuickStart ) seems outdated.
Is this platform still supported by Linaro ?
What is the Freescale Landing team's recommended tag to use to test
linux-linaro on iMX53QSB ?
What are the recommended GPU & VPU libraries to use to get the best of
the i.MX53 with linux-linaro ?
Thanks
Eric
--
http://eukrea.com/en/news/104-2012
== Deepak Saxena <dsaxena> ==
=== Highlights ===
* Worked on article on "Kernel Upstreaming Challenges" for executive
member update.
Ended up writing one version and completely throwing it away as it
was too introductory
but hope to use that to write a larger white-paper type of document
on the topic. Update
article draft @ http://goo.gl/9SBpT.
* Self-review, engineer review. (Do we really need to do these every
3-4 months?)
* Worked with Mounir on 12.04 blueprint updates
* Submitted talk proposal on "One zImage to Rule Them All" to LinuxCon Japan
* Regular 1:1s and meetings
=== Plans ===
* Finish review cycle work
* Finish patch tracking spreadsheet for upstream kernel work
* Connect planning
* Roadmap cards
=== Issues ===
* No major ones, though still feeling behind on everything due to
being sick earlier
in the month. :/
=== Travel/Time Off ===
* Off May 4th and following week, back to work on Monday the 13th. Will have no
interwebs and limited phone access.
* Connect Q2, possibly with follow up
== Rajendra Nayak <rnayak> ==
=== Highlights ===
* Worked on patches to make OMAP transition to common clk one
SoC family at a time and also maintaining git-bisect. Turned
out much ugly than I initially thought. Shared the patches along
with a few minor fixes with Mike.
* Started working on optimizing (reducing) OMAP4 common clk data
on top of Mikes' initial work. Mostly done manual cleanups for now.
Need to update the autogen scripts.
* Started validating OMAP5 common clk using Mikes' framework changes
and autogen updates.
=== Plans ===
* Autogen updates for OMAP4 data, OMAP5 validation and fixes to
framework changes.
=== Misc ===
* Planning to take off on 2,9,10 April due to some personal
emergency travel.
=== Highlights ===
* Sent out last bits of timekeeping changes for 3.4 & got them merged.
* Spent a bit of time re-installing & reconfiguring my system
environment per new internal policies:
http://www.codinghorror.com/.a/6a0120a85dcdae970b016301e98de2970d-800wi
* Sent out first pass at config fragment integration into the linaro
kernel. Got some good feedback & patches from Tixy and Tushar.
* Ran Android Subteam phone meeting & set up recurring phone meeting
biweekly.
* Reviewed Danial Walkers performance comparision between shm based and
android logger based logging. Got into a longish discussion off-list
discussion with him about Android's design requirements. Hopefully will
see another iteration from Daniel.
* At Tixy's prodding, contacted Dima to see about the earlysuspend
removal in 3.3 and what fixes for the log flooding that caused are
recommended. Got a quick response that they have a fix, and are looking
to push it out soon. Tixy suggested a fix in the meantime.
* Did a first pass fwd port of the Android 3.3 patch stack to 3.4.
Messed up some of the mmc items and will likely have to try again.
* Got a first pass at reworking the fadvise volatile code to store tree
roots in a hash rather then bloat the address_space structure. It seems
to be working, but I kind of don't believe it.
=== Plans ===
* More testing on fadvise volatile hash rework & send to lkml
* Get all of Tushar's changes merged into the config fragment tree
* Take another shot at fwd porting the Android tree to 3.4
=== Issues ===
* NA
== Arnd Bergmann ==
=== Highlights ===
* Merge window, part two: everything we had queued is now in mainline
* Discussed swap on flash with a few people, sent out first proposal
* Continued DT discussion for spear, kirkwood, shmobile
=== Plans ===
* more review for DT conversions
* regression testing post merge window
* getting my build server back running
* dig out my CONFIG_NO_IOPORT patch set and get that into linux-next
== Venkatraman S svenkatr ==
== Highlights ==
* Sent out pull request for UFS and eMMC features for Linaro Kernel release
* Coding up eMMC foreground HPI code. Sent a rough first cut to Storage folks.
* Studies UFS implementation. Plan to abstract out the PCI specific
part of driver files
== Plans ==
* More HPI coding and do some stress tests
* Test eMMC Power off notify with OMAP.
== Misc ==
* Was on leave for 2 days