On Fri, Aug 12, 2016 at 12:14:20AM +0900, Akira Yokosawa wrote: > Hi Paul, > > As I said the other day, I added a rule for ".fig -> .eps" in Makefile and > evaluate the increase in time of the first build (or builds after > "make neatfreak"). > > To reduce the build time, 2nd patch moves several currently unused ".fig" files > to ".unused" sub-directories. > 3rd patch removes ".eps" files in the repository whose sources are ".fig" files. > 4th patch updates ".gitignore"s to reflect the removed files. > 5th patch updates FAQ-BUILD.txt to notify people that we now need the "fig2ps" > package for "fig2eps" command on Ubuntu. > > The result of the evaluation is as follows. > Time is measured by "time" command such as "$ make neatfreak; time make -j4" > on a virtual machine with 4 cpus. The "real" times are collected from the output. > The value in each cell is the simple average of 4 samples. > > |before (sec)| after (sec)| | > no of thread | (1a508f6a) | (641b6a55) | diff (sec) | diff (%) > 1 | 141.8 | 153.5 | 11.7 | 8.3 > 2 | 83.8 | 89.9 | 6.1 | 7.3 > 3 | 64.7 | 68.8 | 4.1 | 6.3 > 4 | 55.7 | 59.0 | 3.3 | 5.9 > > As you may see, the time increase would be almost unnoticeable if you are > building with more than -j4. > > Of course, modification of Makefile needs to be fully tested before merging. > I've tested myself doing the above evaluation. > > If you are satisfied with the change, please consider merging. Hmmm... Pulling this, and then cloning into a new repository gets me this: $ make -j8 SMPdesign/AllocatorPool.fig --> SMPdesign/AllocatorPool.eps make: *** [SMPdesign/AllocatorPool.eps] Error 127 make: *** Waiting for unfinished jobs.... SMPdesign/DiningPhilosopher5.tex --> SMPdesign/DiningPhilosopher5.eps I get the same error if I do "make neatfreak" beforehand. What am I doing wrong? Thanx, Paul > Thanks, Akira > > ----- > The following changes since commit 1a508f6ad8b6d4e722c8511c459ae7ae9d2591b5: > > Get .gitignore in right place for hash-table code (2016-08-10 16:14:18 -0700) > > are available in the git repository at: > > https://github.com/akiyks/perfbook.git makefile-add-fig-eps-rule > > for you to fetch changes up to 641b6a5541323d737b1e2ca31e9a805da19514f1: > > FAQ-BUILD.txt: Add 'fig2ps' as necessary package on Ubuntu (2016-08-11 22:50:02 +0900) > > ---------------------------------------------------------------- > Akira Yokosawa (5): > Makefile: Add .fig -> .eps rule > Move unused .fig and .eps files to .unused directory > Remove .eps files whose sources are .fig files > Update and create .gitignore files > FAQ-BUILD.txt: Add 'fig2ps' as necessary package on Ubuntu > > FAQ-BUILD.txt | 2 +- > Makefile | 18 +- > SMPdesign/.gitignore | 10 + > SMPdesign/AllocatorPool.eps | 287 -- > SMPdesign/LockGranularity.eps | 243 -- > SMPdesign/MazeNumberPath.eps | 157 - > SMPdesign/MemoryBarrierPairing.eps | 218 -- > SMPdesign/ParallelFastpath.eps | 213 - > SMPdesign/allocatorcache.eps | 225 -- > SMPdesign/lockdeqhash.eps | 218 -- > SMPdesign/lockdeqhash1R.eps | 784 ---- > SMPdesign/lockdeqhashlots.eps | 479 --- > SMPdesign/lockdeqpair.eps | 177 - > advsync/.gitignore | 22 + > advsync/.unused/MoreThanOneValue-15CPU-noresp.eps | 1306 ------- > advsync/AbstractMemoryAccessModel.eps | 191 - > advsync/DataDependencyNeeded.eps | 775 ---- > advsync/DataDependencySupplied.eps | 738 ---- > advsync/MemoryArchitecture.eps | 327 -- > advsync/MemoryBarrierPairing.eps | 221 -- > advsync/MoreThanOneValue-15CPU.eps | 1306 ------- > advsync/MoreThanOneValue.eps | 200 - > advsync/RCU-API.eps | 200 - > advsync/RCUDeletion.eps | 253 -- > advsync/RCUInsertion.eps | 210 - > advsync/RCUReaderGP.eps | 181 - > advsync/RCUReaderGPExtends.eps | 199 - > advsync/RCUReplacement.eps | 414 -- > advsync/ReadBarrierNeeded.eps | 673 ---- > advsync/ReadBarrierSupplied.eps | 693 ---- > advsync/ReadBarrierSupplied1.eps | 722 ---- > advsync/ReadBarrierSupplied2.eps | 699 ---- > advsync/SpeculativeLoad.eps | 603 --- > advsync/SpeculativeLoadBarrier.eps | 595 --- > advsync/SpeculativeLoadBarrierCancel.eps | 633 --- > advsync/SplitCache.eps | 250 -- > advsync/WriteBarrierOrdering.eps | 613 --- > appendix/questions/.gitignore | 1 + > appendix/questions/after.eps | 170 - > appendix/rcuhist/{ => .unused}/linux-RCU.eps | 0 > appendix/rcuhist/{ => .unused}/linux-RCUlock.eps | 0 > appendix/rcuhist/{ => .unused}/rcuAPI.eps | 0 > .../rcuimpl/{ => .unused}/AdvanceRCUCallbacks.fig | 0 > .../rcuimpl/{ => .unused}/BigTreeClassicRCU.fig | 0 > .../rcuimpl/{ => .unused}/BigTreeClassicRCUBH.fig | 0 > .../{ => .unused}/BigTreeClassicRCUBHdyntick.fig | 0 > appendix/rcuimpl/{ => .unused}/FlatClassicRCU.fig | 0 > .../{ => .unused}/GenericRCUStateMachine.fig | 0 > appendix/rcuimpl/{ => .unused}/GracePeriodBad.fig | 0 > appendix/rcuimpl/{ => .unused}/RCUTreeInit.fig | 0 > appendix/rcuimpl/{ => .unused}/RCUTreeLeafScan.fig | 0 > appendix/rcuimpl/{ => .unused}/RCUTreeQSScan.fig | 0 > appendix/rcuimpl/{ => .unused}/RCUbweBlock.fig | 0 > .../{ => .unused}/RCUpreemptCounterFlip.fig | 0 > appendix/rcuimpl/{ => .unused}/RCUpreemptLists.fig | 0 > .../{ => .unused}/RCUpreemptListsCompare.fig | 0 > .../rcuimpl/{ => .unused}/RCUpreemptStates.fig | 0 > .../rcuimpl/{ => .unused}/RCUpreemptTimeline.fig | 0 > .../rcuimpl/{ => .unused}/RCUpreemptValidation.fig | 0 > appendix/rcuimpl/{ => .unused}/RCUrt-MBnowaste.fig | 0 > appendix/rcuimpl/{ => .unused}/RCUrt-MBwaste.fig | 0 > .../rcuimpl/{ => .unused}/TinyRCUCallbacks.fig | 0 > appendix/rcuimpl/{ => .unused}/TreeClassicRCU.fig | 0 > .../rcuimpl/{ => .unused}/TreeClassicRCUGP.fig | 0 > appendix/rcuimpl/{ => .unused}/TreeMapping.fig | 0 > .../rcuimpl/{ => .unused}/TreeRCUStateMachine.fig | 0 > appendix/rcuimpl/{ => .unused}/srcuds.fig | 0 > appendix/rcuimpl/AdvanceRCUCallbacks.eps | 316 -- > appendix/rcuimpl/BigTreeClassicRCU.eps | 286 -- > appendix/rcuimpl/BigTreeClassicRCUBH.eps | 305 -- > appendix/rcuimpl/BigTreeClassicRCUBHdyntick.eps | 462 --- > appendix/rcuimpl/FlatClassicRCU.eps | 254 -- > appendix/rcuimpl/GenericRCUStateMachine.eps | 514 --- > appendix/rcuimpl/GracePeriodBad.eps | 194 - > appendix/rcuimpl/RCUTreeInit.eps | 490 --- > appendix/rcuimpl/RCUTreeLeafScan.eps | 504 --- > appendix/rcuimpl/RCUTreeQSScan.eps | 504 --- > appendix/rcuimpl/RCUbweBlock.eps | 575 --- > appendix/rcuimpl/RCUpreemptCounterFlip.eps | 291 -- > appendix/rcuimpl/RCUpreemptLists.eps | 220 -- > appendix/rcuimpl/RCUpreemptListsCompare.eps | 311 -- > appendix/rcuimpl/RCUpreemptStates.eps | 4120 -------------------- > appendix/rcuimpl/RCUpreemptTimeline.eps | 351 -- > appendix/rcuimpl/RCUpreemptValidation.eps | 696 ---- > appendix/rcuimpl/RCUrt-MBnowaste.eps | 273 -- > appendix/rcuimpl/RCUrt-MBwaste.eps | 345 -- > appendix/rcuimpl/TinyRCUCallbacks.eps | 233 -- > appendix/rcuimpl/TreeClassicRCU.eps | 288 -- > appendix/rcuimpl/TreeClassicRCUGP.eps | 730 ---- > appendix/rcuimpl/TreeMapping.eps | 219 -- > appendix/rcuimpl/TreeRCUStateMachine.eps | 358 -- > appendix/rcuimpl/srcuds.eps | 268 -- > appendix/whymb/.gitignore | 7 + > appendix/whymb/MESI.eps | 293 -- > appendix/whymb/cacheSB.eps | 216 - > appendix/whymb/cacheSBf.eps | 247 -- > appendix/whymb/cacheSBfIQ.eps | 271 -- > appendix/whymb/cacheSC.eps | 150 - > appendix/whymb/cacheSCwrite.eps | 170 - > appendix/whymb/hostileordering.eps | 243 -- > count/.gitignore | 5 + > count/GlobalInc.eps | 429 -- > count/GlobalTreeInc.eps | 501 --- > count/PerThreadInc.eps | 421 -- > count/count_lim.eps | 177 - > count/globbal.eps | 331 -- > cpu/.gitignore | 2 + > cpu/3DI.eps | 193 - > cpu/SystemArch.eps | 395 -- > datastruct/.gitignore | 1 + > datastruct/hashdiagram.eps | 301 -- > defer/.gitignore | 10 + > defer/GracePeriodGood.eps | 210 - > defer/Linux_hlist.eps | 208 - > defer/Linux_list.eps | 241 -- > defer/Linux_list_abbr.eps | 139 - > defer/QSBRGracePeriod.eps | 255 -- > defer/RCUDeletion.eps | 253 -- > defer/RCUListDeleteClassic.eps | 328 -- > defer/RCUReplacement.eps | 470 --- > defer/RCUenvAPI.eps | 214 - > defer/rwlockRCUupdate.eps | 264 -- > formal/.gitignore | 1 + > formal/RCUpreemptStates.eps | 4120 -------------------- > intro/.gitignore | 4 + > intro/FourTaskCategories.eps | 261 -- > intro/FourTaskOrder.eps | 321 -- > intro/Generality.eps | 386 -- > intro/PPGrelation.eps | 165 - > locking/.gitignore | 5 + > locking/DeadlockCycle.eps | 227 -- > locking/LayeredLockHierarchy.eps | 222 -- > locking/LocalLockHierarchy.eps | 221 -- > locking/NonLocalLockHierarchy.eps | 221 -- > locking/rnplock.eps | 305 -- > toolsoftrade/.gitignore | 1 + > toolsoftrade/shellparallel.eps | 210 - > 137 files changed, 84 insertions(+), 41864 deletions(-) > delete mode 100644 SMPdesign/AllocatorPool.eps > delete mode 100644 SMPdesign/LockGranularity.eps > delete mode 100644 SMPdesign/MazeNumberPath.eps > delete mode 100644 SMPdesign/MemoryBarrierPairing.eps > delete mode 100644 SMPdesign/ParallelFastpath.eps > delete mode 100644 SMPdesign/allocatorcache.eps > delete mode 100644 SMPdesign/lockdeqhash.eps > delete mode 100644 SMPdesign/lockdeqhash1R.eps > delete mode 100644 SMPdesign/lockdeqhashlots.eps > delete mode 100644 SMPdesign/lockdeqpair.eps > delete mode 100644 advsync/.unused/MoreThanOneValue-15CPU-noresp.eps > delete mode 100644 advsync/AbstractMemoryAccessModel.eps > delete mode 100644 advsync/DataDependencyNeeded.eps > delete mode 100644 advsync/DataDependencySupplied.eps > delete mode 100644 advsync/MemoryArchitecture.eps > delete mode 100644 advsync/MemoryBarrierPairing.eps > delete mode 100644 advsync/MoreThanOneValue-15CPU.eps > delete mode 100644 advsync/MoreThanOneValue.eps > delete mode 100644 advsync/RCU-API.eps > delete mode 100644 advsync/RCUDeletion.eps > delete mode 100644 advsync/RCUInsertion.eps > delete mode 100644 advsync/RCUReaderGP.eps > delete mode 100644 advsync/RCUReaderGPExtends.eps > delete mode 100644 advsync/RCUReplacement.eps > delete mode 100644 advsync/ReadBarrierNeeded.eps > delete mode 100644 advsync/ReadBarrierSupplied.eps > delete mode 100644 advsync/ReadBarrierSupplied1.eps > delete mode 100644 advsync/ReadBarrierSupplied2.eps > delete mode 100644 advsync/SpeculativeLoad.eps > delete mode 100644 advsync/SpeculativeLoadBarrier.eps > delete mode 100644 advsync/SpeculativeLoadBarrierCancel.eps > delete mode 100644 advsync/SplitCache.eps > delete mode 100644 advsync/WriteBarrierOrdering.eps > create mode 100644 appendix/questions/.gitignore > delete mode 100644 appendix/questions/after.eps > rename appendix/rcuhist/{ => .unused}/linux-RCU.eps (100%) > rename appendix/rcuhist/{ => .unused}/linux-RCUlock.eps (100%) > rename appendix/rcuhist/{ => .unused}/rcuAPI.eps (100%) > rename appendix/rcuimpl/{ => .unused}/AdvanceRCUCallbacks.fig (100%) > rename appendix/rcuimpl/{ => .unused}/BigTreeClassicRCU.fig (100%) > rename appendix/rcuimpl/{ => .unused}/BigTreeClassicRCUBH.fig (100%) > rename appendix/rcuimpl/{ => .unused}/BigTreeClassicRCUBHdyntick.fig (100%) > rename appendix/rcuimpl/{ => .unused}/FlatClassicRCU.fig (100%) > rename appendix/rcuimpl/{ => .unused}/GenericRCUStateMachine.fig (100%) > rename appendix/rcuimpl/{ => .unused}/GracePeriodBad.fig (100%) > rename appendix/rcuimpl/{ => .unused}/RCUTreeInit.fig (100%) > rename appendix/rcuimpl/{ => .unused}/RCUTreeLeafScan.fig (100%) > rename appendix/rcuimpl/{ => .unused}/RCUTreeQSScan.fig (100%) > rename appendix/rcuimpl/{ => .unused}/RCUbweBlock.fig (100%) > rename appendix/rcuimpl/{ => .unused}/RCUpreemptCounterFlip.fig (100%) > rename appendix/rcuimpl/{ => .unused}/RCUpreemptLists.fig (100%) > rename appendix/rcuimpl/{ => .unused}/RCUpreemptListsCompare.fig (100%) > rename appendix/rcuimpl/{ => .unused}/RCUpreemptStates.fig (100%) > rename appendix/rcuimpl/{ => .unused}/RCUpreemptTimeline.fig (100%) > rename appendix/rcuimpl/{ => .unused}/RCUpreemptValidation.fig (100%) > rename appendix/rcuimpl/{ => .unused}/RCUrt-MBnowaste.fig (100%) > rename appendix/rcuimpl/{ => .unused}/RCUrt-MBwaste.fig (100%) > rename appendix/rcuimpl/{ => .unused}/TinyRCUCallbacks.fig (100%) > rename appendix/rcuimpl/{ => .unused}/TreeClassicRCU.fig (100%) > rename appendix/rcuimpl/{ => .unused}/TreeClassicRCUGP.fig (100%) > rename appendix/rcuimpl/{ => .unused}/TreeMapping.fig (100%) > rename appendix/rcuimpl/{ => .unused}/TreeRCUStateMachine.fig (100%) > rename appendix/rcuimpl/{ => .unused}/srcuds.fig (100%) > delete mode 100644 appendix/rcuimpl/AdvanceRCUCallbacks.eps > delete mode 100644 appendix/rcuimpl/BigTreeClassicRCU.eps > delete mode 100644 appendix/rcuimpl/BigTreeClassicRCUBH.eps > delete mode 100644 appendix/rcuimpl/BigTreeClassicRCUBHdyntick.eps > delete mode 100644 appendix/rcuimpl/FlatClassicRCU.eps > delete mode 100644 appendix/rcuimpl/GenericRCUStateMachine.eps > delete mode 100644 appendix/rcuimpl/GracePeriodBad.eps > delete mode 100644 appendix/rcuimpl/RCUTreeInit.eps > delete mode 100644 appendix/rcuimpl/RCUTreeLeafScan.eps > delete mode 100644 appendix/rcuimpl/RCUTreeQSScan.eps > delete mode 100644 appendix/rcuimpl/RCUbweBlock.eps > delete mode 100644 appendix/rcuimpl/RCUpreemptCounterFlip.eps > delete mode 100644 appendix/rcuimpl/RCUpreemptLists.eps > delete mode 100644 appendix/rcuimpl/RCUpreemptListsCompare.eps > delete mode 100644 appendix/rcuimpl/RCUpreemptStates.eps > delete mode 100644 appendix/rcuimpl/RCUpreemptTimeline.eps > delete mode 100644 appendix/rcuimpl/RCUpreemptValidation.eps > delete mode 100644 appendix/rcuimpl/RCUrt-MBnowaste.eps > delete mode 100644 appendix/rcuimpl/RCUrt-MBwaste.eps > delete mode 100644 appendix/rcuimpl/TinyRCUCallbacks.eps > delete mode 100644 appendix/rcuimpl/TreeClassicRCU.eps > delete mode 100644 appendix/rcuimpl/TreeClassicRCUGP.eps > delete mode 100644 appendix/rcuimpl/TreeMapping.eps > delete mode 100644 appendix/rcuimpl/TreeRCUStateMachine.eps > delete mode 100644 appendix/rcuimpl/srcuds.eps > create mode 100644 appendix/whymb/.gitignore > delete mode 100644 appendix/whymb/MESI.eps > delete mode 100644 appendix/whymb/cacheSB.eps > delete mode 100644 appendix/whymb/cacheSBf.eps > delete mode 100644 appendix/whymb/cacheSBfIQ.eps > delete mode 100644 appendix/whymb/cacheSC.eps > delete mode 100644 appendix/whymb/cacheSCwrite.eps > delete mode 100644 appendix/whymb/hostileordering.eps > delete mode 100644 count/GlobalInc.eps > delete mode 100644 count/GlobalTreeInc.eps > delete mode 100644 count/PerThreadInc.eps > delete mode 100644 count/count_lim.eps > delete mode 100644 count/globbal.eps > create mode 100644 cpu/.gitignore > delete mode 100644 cpu/3DI.eps > delete mode 100644 cpu/SystemArch.eps > create mode 100644 datastruct/.gitignore > delete mode 100644 datastruct/hashdiagram.eps > create mode 100644 defer/.gitignore > delete mode 100644 defer/GracePeriodGood.eps > delete mode 100644 defer/Linux_hlist.eps > delete mode 100644 defer/Linux_list.eps > delete mode 100644 defer/Linux_list_abbr.eps > delete mode 100644 defer/QSBRGracePeriod.eps > delete mode 100644 defer/RCUDeletion.eps > delete mode 100644 defer/RCUListDeleteClassic.eps > delete mode 100644 defer/RCUReplacement.eps > delete mode 100644 defer/RCUenvAPI.eps > delete mode 100644 defer/rwlockRCUupdate.eps > create mode 100644 formal/.gitignore > delete mode 100644 formal/RCUpreemptStates.eps > create mode 100644 intro/.gitignore > delete mode 100644 intro/FourTaskCategories.eps > delete mode 100644 intro/FourTaskOrder.eps > delete mode 100644 intro/Generality.eps > delete mode 100644 intro/PPGrelation.eps > create mode 100644 locking/.gitignore > delete mode 100644 locking/DeadlockCycle.eps > delete mode 100644 locking/LayeredLockHierarchy.eps > delete mode 100644 locking/LocalLockHierarchy.eps > delete mode 100644 locking/NonLocalLockHierarchy.eps > delete mode 100644 locking/rnplock.eps > create mode 100644 toolsoftrade/.gitignore > delete mode 100644 toolsoftrade/shellparallel.eps > -- To unsubscribe from this list: send the line "unsubscribe perfbook" in the body of a message to majordomo@xxxxxxxxxxxxxxx More majordomo info at http://vger.kernel.org/majordomo-info.html