Re: Finding slowdowns in

看板FB_hackers作者時間18年前 (2007/07/24 11:02), 編輯推噓0(000)
留言0則, 0人參與, 最新討論串1/2 (看更多)
Garrett Cooper wrote: > Garrett Cooper wrote: >> Tim Kientzle wrote: >>>> -I tried ... buffering ... the +CONTENTS file parsing function, >>>> and the >>>> majority of the time it yielded good results .... >>> >>> One approach I prototyped sometime back was to use >>> libarchive in pkg_add as follows: >>> * Open the archive >>> * Read +CONTENTS directly into memory (it's >>> guaranteed to always be first in the archive) >>> * Parse all of +CONTENTS at once >>> * Continue scanning the archive, disposing >>> of each file as it appears in the archive. >>> >>> Based on my experience with this, I would >>> suggest you just read all of +CONTENTS >>> directly into memory at once and parse >>> the whole thing in a single shot. >>> fopen(), then fstat() to get the size, >>> then allocate a buffer and read the whole >>> thing, then fclose(). You can then >>> parse it all at once. >>> >>> As a bonus, your parser then becomes a nice >>> little bit of reusable code that reads >>> a block of memory and returns a structure describing >>> the package metadata. >>> >>> Tim Kientzle >> I'm not 100% sure because I'm not comparing apples (virtual disk on >> desktop via VMware) to apples (real disk on server), but I'm showing >> a 2.5-fold speedup after adding the simple parser: >> >> Virtual disk: >> 4.42 real 1.37 user 1.47 sys >> >> Real disk: >> 10.26 real 5.36 user 0.99 sys >> >> I'll run a battery of tests just to ensure whether or not that's the >> case. >> >> Be back with results in a few more days. >> >> -Garrett > Hello, > As promised, here are some results for my work: > > By modifying the parser and heuristics in plist_cmd I appear to > have decreased all figures (except plist_cmd, which I will note later) > from their original values to much lower values. The only drawback is > that I appear to have stimulated a bug with either malloc'ing memory, > printf/vargs, or transferring large amounts of data via pipes where > some of my debug messages are making it into plist_cmd(..) from > obtainbymatch(..), which represents the the 3-fold increase in > reported plist_cmd(..) iterations. > > I'm going to try replacing the debug commands with standard print > statements wherever possible, then replace all tar commands with > libarchive APIs, and see if the problem solves itself. > > Notes: > 1. This sample is based off x11-libs/atk. > 2. It isn't the final set of results. > 3. Graphs coming soon (need to simulate values in Excel on work > machine and convert to screenshots later on when I have a break -- > thinking around noon). I'll repost when I have them available. > 4. CSV files available at: > http://students.washington.edu/youshi10/posted/atk-results.tgz. I've posted HTML results of the interpreted spreadsheet on <http://students.washington.edu/posted/atk.htm>. I'll provide commentary tomorrow after I get some sleep. -Garrett _______________________________________________ freebsd-hackers@freebsd.org mailing list http://lists.freebsd.org/mailman/listinfo/freebsd-hackers To unsubscribe, send any mail to "freebsd-hackers-unsubscribe@freebsd.org"
文章代碼(AID): #16fMlY00 (FB_hackers)
文章代碼(AID): #16fMlY00 (FB_hackers)