Hi All
This week has been good for speeding up yaffs. All cchanges mentioned here are
now in cvs.
As mentioned earlier this week, the dynamic updating of the oldest dirty
sequence number sped up writes by up to 30% for one cell phone platform.
Then there was the addition of background processing for dirty directory
handling. That can reduce the writes associated with small file
creation/deletion by a significant amount meaning less garbage collection and
faster performance.
Today has seen two further check ins that give speed ups:
A) Phase 1 of reduction of shrink headers
Shrink headers are no longer written when files are resized down or
overwritten. This can significantly reduce the number of shrink headers which
can really make a big difference to garbage collection speed. Shrink headers
are still written when files are resized up by large amounts or when a file
is deleted. One particular scenario that this helps is where files are opened
for write with O_TRUNC and completely overwritten. eg.
#cp a foo
#cp b foo
That would have created a shrink header in the past but no longer does.
B) Better block iteration
There are some code sequences that iterated over all blocks and called the
yaffs_GetBlockInfo() function. These now just use direct block iteration
which is way faster. The difference will likely not be anything as dramatic
as other improvements, but it is there.
All my test harnesses will be running for the whole week end to give these
changes a thorough work out.
Friday afternoon here... time to go fishing.
-- Charles