Otellini Keynote Highlights
Download
Report
Transcript Otellini Keynote Highlights
AXFS
Advanced XIP Filing System
Jared Hulbert
Numonyx
April 15, 2008
Agenda
•Goal/History
•Features
•Architecture
•Test Results
•Kernel Integration
Project Goals
Supportable solution for application XIP
Fine grained control on compression
Flexible use of all system memories
–NOR, NAND, RAM
What is Application XIP?
eXecute In Place of userspace code
–Run code from where it is stored on Flash
–Saves memory
–No paging = higher performance
“I thought the kernel supported XIP?”
–Yes, for ext2 with specialized hardware
–Yes, for kernel code segments (xipImage)
Why a New Filesystem?
CRAMFS XIP patches used to work BUT...
–~9 years old and haven’t been merged???
–patches broke, real bad, every year
–File level compression choice
SquashFS? New, better compression BUT…
–Block device oriented architecture
–Didn’t see how to fit new concepts into arch
Features
Basic
Attributes
s
–Read-only
–64bit
–Designed with CE requirements in mind
mind
Compression
on
–4KB-4GB compression block size
–Page by page uncompression map for XIP
XIP
Flexible
Mount
–MTD (NAND/NOR)
–block device
–split across XIP NOR and non-XIP NAND
NAND
Tools
–GPL mkfs.axfs
–Supported propriety image builder available
available
Onmedia Format
Super Block
Region Descriptor
Region Descriptor
Region Descriptor
File Info
XIP Region
Compressed Region
Superblock
– Points to many
region descriptor
Region Descriptor
– Describes / points
to one region
Regions
– Each data type /
table has own
region
– permissions, file
names, file node
info, file data, etc.
Data
Flow
inode
Node Index
XIP Region
XIP
Index 0
Node Type Table
Compressed
cblock Offset Table
Index 1
Compressed Region
cnode Offset Table
Index 2
Uncompressed cblock
Index 0
Index 1
Index 2
Index 3
Application Virtual Pages
Index 1
Index 3
Mount Options
mount –t axfs –o block_dev=/dev/mtd1 /dev/mtd0 /mnt/axfs
/dev/sda0
AXFS
Image
~/file.axfs
(-o loop)
AXFS
Image
/dev/mtd0
(NAND)
AXFS
Image
/dev/mtd0
(NOR)
AXFS
Image
/dev/mtd0
(NOR)
AXFS
Image
Part 1
(MMAP)
/dev/mtd1
(NAND)
AXFS
Image
Part 2
(IO)
Image Size Comparison
CRAMFS(XIP)
AXFS(XIP)
JFFS2
CRAMFS
Squashfs
AXFS
0
32
16
MB
~1 year old Opie build from OpenEmbedded
48
Total Memory Used
JFFS2
SquashFS
AXFS
0
32
64
MB
96
Rootfs size
RAM used
Fitting into Real Chips
JFFS2
SquashFS
AXFS
0
32
64
MB
96
Rootfs size
RAM used
Performance: direct comparison
PXA270
–
–
–
–
520 MHz (CPU)
208 MHz (memory clock)
104 MHz (SDRAM bus)
52 MHz (NOR flash bus)
Linux-2.6.22
–
–
–
–
xipImage
CONFIG_PREEMPT=y
MTD updated to Sept 25 git pull
“mem=24MB” in kernel commandline
Opie build
– OpenEmbedded
– ~1 year old
Performance: Direct Comparison
Root Filing System Comparison Video at:
http://www.youtube.com/watch?v=fu6Yj7iKEiA
Performance: realistic
comparison
Started with commercial phone
– PXA270, 48MB RAM, 32MB NOR, 96MB NAND
– 297 MHz (CPU) / 97 MHz (SDRAM bus) /48 MHz
(NOR flash bus)
– code in CRAMFS from NOR
– data in NAND
“XIP”
– code in AXFS from NOR
– data in NAND
“SnD”
– code in CRAMFS from NAND
– data on NAND
Performance: realistic
comparison
XIP vs. SND: Realistic Performance Comparison Video at:
http://www.youtube.com/watch?v=HUqFrA4FYd0
Kernel Integration Status
Patches
–VM_MIXEDMAP / pageless XIP patchset
– just got in –mm tree
– 2.6.26?
–Physaddr in mtd->point()
– Waiting on dwmw2
Todo Features
–Added compression options (LZO, LZMA, etc)
–brd RAM disk support
Resources
Git tree
git://git.infradead.org/home/jehulber/axfs.git
Sourceforge site
http://axfs.sf.net
App launch time
200
175
150
Time (s)
125
100
75
50
25
0
AXFS
JFFS2
CRAMFS
SquashFS
24MB of RAM
Shuttle Video Launch Time (s)
Webbrowser Launch Time (s)
AXFS
JFFS2
CRAMFS
32MB of RAM
PDF Reader Launch Time (s)
SDL Quake Launch Time (s)
SquashFS