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