FreeBSD Project menu
Dual Processors
Usually urban legends are facts widely held to be true but in reality aren't verifyable. The first one I have dealt with is the urban legend of the "j4" option on the long running buildworld's. I have "crystal" that is a P-200 Pentium that requires 5:25 to cvsup and rebuild everything and "topaz" that is a Athlon 900 that requires less than a hour. The buildworld times for topaz are documented in the table below. This option produced buildworld's that typically ran several % to 10% or more slower. The only way to document it is to include the runs in a table. The primary purpose of the tests was to document the effect of using Softupdates on a file system. The times for the buildworlds fell out of various configurations. All cases were run specifying "-pipe" in /etc/make.conf. The most noticeable affect was the time for no "-j" parameter and softupdates. It was almost 20 minutes faster than over specifying the "-j" parameter and not using softupdates.
It wasn't until I saw the really fast results that I really thought I could put a reasonably priced system together that would do a buildworld in 30 minutes. An elapsed time of 30 minutes is what I think someone responding to a "stable is broken" message in FreeBSD-Stable needs in order to verify if it is broken or we have a user error of some sort. A time much longer than that and we have people placing blame on a lack of responsiveness by the FreeBSD community. I think with a build time of 30 minutes, you can see the message, cvsup and do your builds, and reply. The critical time for the entire response process is an hour in my mind.
| Options and Parameters | User - secs | System - secs | Elapsed Time | |
| 2-HD | 1516.863u | 442.821s | 57:17 | 57.0% |
| 3-HD | 1522.877u | 455.119s | 56:52 | 57.9% |
| 3-HD, j4 | 1547.296u | 553.318s | 58:16 | 60.0% |
| 3-HD, j4, softupdates | 1539.114u | 521.486s | 45:54 | 74.7% |
| 3-HD, softupdates | 1524.149u | 431.967s | 38:41 | 84.2% |
| 3-HD, j2, softupdates | 1539.568u | 516.322s | 49:29 | 69.2% |
| 3-HD, softupdates 2000+ XP | 877.636u | 233.835s | 23:02 | 80.4% |
| 3-HD, j4, softupdates | 893.259u | 310.180s | 32:44 | 61.2% |
The notation 2-HD indicates that /usr/obj and /usr/src are on different HD's. Each HD used in the active part of the build is an ATA-100 on a Promise UDMA-66 I/O card. The 3rd HD is attached to the KT7 IDE controller but downgraded to PIO-4 because of UDMA errors when using FreeBSD. The build process has a tee to capture the build log and the 3-HD has the build log being saved on a 3rd HD. On the 2000+ system, all of the HDs at attached to individual ATA-133 controllers.
The hardware is a Abit KT7 mb with an AMD Athlon Thunderbird 900 Mhz. The system has 256 MB of memory. The 2000+ XP cpu is in a Gigabyte GA-7VAXP mb and has 256MB of 266MHz DDR memory. The 23 minute elapsed time has been seen since the system was upgraded to the 2000+ XP cpu.
The hardware for this test is an Abit VP6 with two P-III 866eb's on it. The system has 2-128MB SDRAM PC-133 memory sticks and a single Maxtor 30 GB ATA100 HD. The Maxtor is on IDE1, which is a UDMA-66 controller. The table is in the order of the tests. The VP6 has an HPT-370 Raid controller and that will be used in the tests at some point.
The first thing that I noticed was that using a dual processor system wasn't faster. In fact, it was slower than the single processor system with multiple HD's being used for intermediate compiler output. The interesting test, which can't be run right now, will be 2-30 GB drives that are striped using the raid controller. That was always blazingly fast on Cray X/MP benchmarks that I ran a long time ago. The raid-0 runs were fast but they did not produce the results that 3 drives on 3 controllers produced.
The FreeBSD 4.3 buildworlds were all made on a system with 3-30 GB ATA-100 Maxtor's on individual controllers. The build script logs to one HD, reads the source from a different HD and write an /usr/obj on the 3rd HD. All of the drives have softupdates turned on. The system was built for one reason and that was to do a buildworld as fast as I could for a reasonable price. The final times, which were around 29 minutes, were made after the write cache was turned back on. The effect was dramatic. I tried -j10 but -j8 was a little bit faster. Unless you sit on the computer and wait for it to finish, you will not see it. I think that I would need 2 or 3 Ultra-160 scsi HD's to improve on the current time.
| Options and Parameters | User - secs | System - secs | Elapsed Time | |
| 1-HD, -j4, softupdates | 1647.022u | 683.811s | 1:02:17 | 62.3% |
| 1-HD, softupdates, 2-seti's | 1722.598u | 656.215s | 0:52:20 | 75.7% |
| 1-HD, softupdates | 1597.238u | 629.123s | 0:47:52 | 77.5% |
| 2-HD's softupdates and no -jx | 1597.252u | 634.066s | 43:28.20 | 85.5% |
| raid-0 for /usr/obj and no softupdates | 1599.347u | 628.302s | 1:21:36.28 | 45.4% |
| raid-0 (4k) for /usr/obj and softupdates | 1603.293u | 620.783s | 42:50.70 | 86.5% |
| buildworld no -jx - FreeBSD 4.3 (wc=0) | 1577.621u | 573.985s | 52:55.19 | 67.7% |
| buildworld -j2 - 3-HD/3-controllers | 1606.611u | 654.399s | 47:43.18 | 78.9% |
| buildworld -j4 | 1624.105u | 662.878s | 40:40.73 | 93.7% |
| buildworld -j8 | 1649.700u | 679.762s | 41:23.96 | 93.7% |
| buildworld -j8 | 1598.496u | 642.897s | 28:55.45 | 129.1% |
![]() |