Since my last e-mail, I've done some more exploring on the code. I've discovered that all variants currently use at least 3 64 kiB segments. I was surprised to see that ISOLINUX does not implement any cache segment yet SYSLINUX and EXTLINUX, the disk-based variants do. Are there any ideas on why the faster disk-based variants have cache? Is it as simple as no one has attempted to dedicate the time to it? Unless I create some sort of dirent structure in ISOLINUX (probably similar to ISO-9660's structure, having a record length, file length, attributes and file name), utilizing readdir will be extremely slow, even on a relatively empty directory, as each call to readdir only wants to return one entry but must fetch data from the device (optical drive in this case). With that in mind and a statement by HPA that performance is almost a non-issue except when it comes to disk-like device I/O (floppy, hdd, optical CD/DVD) and graphics, it seems that it may be time to implement the cache. If the cache were to be implemented, it would either have to have pass through routines when in debug mode ("%define DEBUG_MESSAGES 1") to reduce size or some of the uninitialized data in the first segment needs to move elsewhere, probably a new data segment (for a total of 5 segments in ISOLINUX). -Gene
Gene Cumm wrote:> Since my last e-mail, I've done some more exploring on the code. I've > discovered that all variants currently use at least 3 64 kiB segments. > > I was surprised to see that ISOLINUX does not implement any cache > segment yet SYSLINUX and EXTLINUX, the disk-based variants do. Are > there any ideas on why the faster disk-based variants have cache? Is > it as simple as no one has attempted to dedicate the time to it?Pretty much. As you may notice, too, EXTLINUX doesn't cache the contents of directories, either. The big issue is actually that it means having to have a scheme for separating cacheable and noncachable reads -- we don't have enough of a cache to make everything worth caches.> With that in mind and a statement by HPA that performance is almost a > non-issue except when it comes to disk-like device I/O (floppy, hdd, > optical CD/DVD) and graphics, it seems that it may be time to > implement the cache. If the cache were to be implemented, it would > either have to have pass through routines when in debug mode ("%define > DEBUG_MESSAGES 1") to reduce size or some of the uninitialized data in > the first segment needs to move elsewhere, probably a new data segment > (for a total of 5 segments in ISOLINUX).I don't think that helps -- the issue with DEBUG_MESSAGES is mainly overflow of the first (2048 byte) sector. -hpa -- H. Peter Anvin, Intel Open Source Technology Center I work for Intel. I don't speak on their behalf.