I'd like to start wishing every plex86-er a happy 2001 !
So, and now I want to get some concerns which have been bothering me
the last days of 2000 of my chest with regard to Kevin's critique
concerning the write-cache performance.
Performance is based on getting 4 things right:
1) Designing a performance capable architecture
2) Pinpointing performance problem areas
3) Choosing the right algoritms
4) Efficient low level coding
I have been busy working on computer chess programs the last 15 years,
a class of programs where every cycle wasted is a death crime.
This included all 4 subjects mentioned above, including writing
Pentium assembly code to keep both instruction pipelines occupied.
So I guess this should qualify me to have an opinion on performance.
I would estimate the impact of the write-cache performance
to be less than 0,001% on the total plex86 performance based on
the following reasoning:
Let's assume that about 1% of the time Plex is executing in user mode,
99% in kernel mode. The user part of the code could be profiled and
we would find that e.g. 0.1% of the time we are executing code related
to the STL map routines.
So the time waisted in the write-cache search routines would be 0.01 *
0.001
of the total plex execution time (0.00001 -> 0.001%). When in
the future plex becomes 100 times faster and the IO bottleneck
between the guest and the host enjoys the same performace gains this
could
oerhaps become 0.1% one day). It's not even sure many users will use
the write-cache plugin at all.
We could improve the write cache performance a factor 2 by
doubling the lines of code, halving the number of features offered,
throwing in some subtle bugs, Kevin and I waisting our time
on these mails, etc, but the plex user would never enjoy a performance
gain.
Hack, I could as well rewrite the write-cache in C using %^#*@%^@
linked lists for storage !!!
So, that's of my chest :-)
I'd like to work on plex in 2001 to add features and improve
performance, but I'd like common sense applied to performance issues.
Hope this subject is closed now and we can go own
working on the Plex code. By the way, I added a sync mode to the
current write-cache implementation (copies the persistant cache
to the diskimage) and removed unneeded seeks.
When requested to rewrite it in C (use linked lists and remove
the possibility to support more than one write-cache?) then I'll do so,
but not to have it thrown out of the window, so I'd really like
some positive feedback on this subject.
Anyway, no hard feelings, happy 2001 !!!
Tom