As a follow-up, I have spent the last few weeks working on this issue. Indeed, Photoshop's behavior is hideous but that doesn't mean that OpenAFS couldn't be more efficient.
Photoshop for some unknown reason wants to access the file d:/dir1/dir2/dir3/file by performing a FindFirst for dir2 within dir1; then a FindFirst for dir3 within dir2; and then a FindFirst for file within dir3. It does this several times as part of the opening of each and every file. It also does this as part of the construction of the "Open recent" menu. The implementation of the CIFS FindFirst operation is to parse the AFS directory data for the specified search mask and return the results. If the number of items within the directory are small this implementation is not too much of a problem. However, if the number of directory items is large (greater than 10,000 items in Mike's situation) the AFS client service will burn a great deal of CPU and clock time searching all of the data buffers. If the search mask pattern contains a wild card then we really don't have a choice but to search the directory contents. On the other hand, if there are no wild cards then we can optimize the FindFirst function and for this case change function to require constant time. [O(1) instead of O(n)] Instead of searching the directory data we instead perform a cm_Lookup() on the file name and ensure that we have a valid callback. With this change, the performance of Photoshop on directory trees with large numbers of entries becomes more than reasonable. 250MB JPGs open in about two seconds of clock time when stored in a three directory deep tree. At the same time AFS client service CPU utilization remains in the single digits instead of using 99% of a single processor. During the analysis of the behavior it was also determined that the CIFS CreateX and NTCreateX functions could optimize the number of lock operations performed against the file server reducing the number of round trips from three to one. This change further reduces the time necessary to open a file in exclusive write mode. I wish to thank Pictage for funding this research and development that the entire community in going to benefit from. These changes will appear in 1.5.13. Jeffrey Altman Secure Endpoints Inc. _______________________________________________ OpenAFS-info mailing list [email protected] https://lists.openafs.org/mailman/listinfo/openafs-info
