Hello Kirill and Hackers,

After reviewing the changes I made last weekend to pkg_install I'm seeing slight improvements, but not a large amount of improvement in overall program operation. I haven't implemented mmap(2) yet as John Baldwin suggested (need to do some reading about fcntl(2) tomorrow because I want to implement locking), so I should see a large boost then, but I was wondering if I should do something similar to the following to reduce redundant disk accesses.

1. Lock +CONTENTS and related files exclusively for writes. Allow shared reads among separate pkg_install (and derivative programs) processes, and derivative packing lists with a limited set and use a LRU type algorithm to move packing lists in and out of shared memory. 2. If shared memory amongst separate processes is possible, share the ports INDEX's entire package list as a global object, and update only if the INDEX's real and virtual copy get out of sync (i.e. local copy is replaced, modified, or touch(1)'ed).

+CONTENTS and INDEX are read frequently (once per process set) and although modifying pkg_install won't benefit overall operation speed without implementing a different data structure setup (still aiming for something like red-black trees for larger package lists like INDEX has, and linked lists for the smaller package lists), I think that the above changes would reduce wait times as pkg_install and installing ports becomes more and more concurrent.

Clarifications and comments are more than welcome. I really appreciate it. Also, if someone can point me to the unofficial locking guidelines page (I remember it coming up twice in the past, but I'm busy now and wondering if someone can quickly point me to the page), it'd be more than appreciated.

Thanks!
-Garrett
_______________________________________________
freebsd-hackers@freebsd.org mailing list
http://lists.freebsd.org/mailman/listinfo/freebsd-hackers
To unsubscribe, send any mail to "[EMAIL PROTECTED]"

Reply via email to