CSS HTML Validator 2017 Development Computer Build
Posted: Thu Aug 17, 2017 8:24 pm
NOTE: Scroll down for more photos.
I thought I'd "document" another new development computer build. I will use this new computer to develop CSS HTML Validator 2018 (v18) and later. Some people might be interested in what hardware CSS HTML Validator is developed on, or just interested in the experiences of putting together your own computer. Therefore I thought I'd share my experiences and some photos.
I posted about my previous computer build in 2012, and that computer lasted about 5 years which is the longest I've gone without a major computer upgrade (I originally expected to get only 3 years of development use out of it). During that time (2012-2017), it did not seem to me that there was any major breakthrough to justify a new build. However, 2017 is a different story with AMD's new Ryzen and Threadripper processors, and Intel's new offerings. Things seem to really be moving again when it comes to CPUs. By the way, if you want to go back farther in time, then also check out my 2010 build with an Intel Core i7 920.
One interesting thought that I think is more true than ever these days is that what you use your computer for is more important than ever when it comes to choosing the best CPU for your needs. While I was trying to decide what CPU to get, I looked at a lot of benchmarks and many CPUs were "all over the map". One CPU might come on top for one benchmarks but perform poorly on another one. If you're looking for the best CPU for your own needs then zero-in on the benchmarks that come closest to measuring what you'll be doing with the CPU, taking into account how many cores you really need in order to maximize your benefit. Not everyone needs 16 cores like Threadripper offers, and getting a 16 core CPU when your needs would be better served with a very fast (high clock rate) and much cheaper 4 core CPU is just a waste of money as well as electricity (Threadripper is one of the more power hungry processors you can buy, even when just idling).
I plan to update this post as new things come to mine or corrections are made.
My previous machine that I used to develop CSS HTML Validator was no slouch. It was an overclocked (to 4.3 GHz) Intel Core i7-3770K with 16GB of RAM and 5 monitors. You can read more about my previous development machine here. I still use the machine for any final bug-fix builds I will make of v17. By the way, note that eventually I did get rid of the buggy 7850 video cards and replaced them with an NVIDIA card. The problems I had with those AMD/ATI cards really left a bad taste in my mouth so no more AMD video cards for me.
And if you want to go further back, you can read about the machine before that, built in 2010 with a Core i7 920.
Fortunately, because I used Windows 10 Pro (x64) on my previous machine, and will be using the same OS on my new machine, I don't encounter any software issues related to OS compatibility (like what you might encounter when upgrading from Windows 7/8 to Windows 10).
Overclocking the Intel i7-7820X
I don't mind getting a little extra speed out of a computer as long as it's not a big hassle and the system is stable. I was able to conservatively overclock my previous system and it was extremely stable. Unfortunately my luck with overclocking seems to have been reduced with my 2017 build, at least so far. The 7820X chip already generates up to 140W of heat and it seems that overclocking will significantly increase that to the point where it is too much for my Noctua NH-U14S air cooler to dissipate. So if you want to overclock this chip then you should probably get a water cooler or at least the beefier (and heavier) Noctua NH-D15 air cooler with dual fans.
The good news is that the turbo boost of this chip is more aggressive, and it often boosts the clock speeds to 4 Ghz or above, and Turbo Boost 3.0 even goes to 4.5 Ghz, but only on one (or two?) cores (you need a supported OS and driver for this, and Windows 10 x64 does support it). Therefore, because of the more aggressive turbo boost, I'll probably not overclock this chip.
You can read more about Turbo Boost 3.0 here: https://www.intel.com/content/www/us/en ... 21587.html
UPDATE 2018-05-04: More About Intel® Turbo Boost Max Technology 3.0
Intel's Turbo Boost Max Technology 3.0 is a bit of a mess if you ask me. I thought I was using it but when I recently checked, I couldn't see it working (per HWMonitor which can monitor individual CPU core speed). So I spent a bit of time and did some research to discover that some changes were needed in my BIOS. The changes are described in this YouTube video: https://www.youtube.com/watch?v=Z1AxWDieonk . In the BIOS, two of my cores were marked with an asterisk, supposedly meaning they are the best cores as determined by Intel when the chip was tested. By setting the max ratio on these two cores to 45, I was able to see them occasionally hit 4.5 GHz as expected. I left the ratio for the other cores at 'Auto'.
Another related article on this technology can be found here: https://www.anandtech.com/show/10337/th ... 10-cores/2
Why a New Build?
Because it's been 5 years since my last build and now there are significantly better multi-core CPUs on the market. Also, the new compiler I'd like to use is slower than the old compiler (but supports newer C++ features). The newer compiler also supports parallel compilation which should significantly speed things up especially with 8 CPU cores (plus hyperthreading). I'm still working on getting everything setup on my new machine but I was able to do a brief test and compile cmdlineprocessor.exe (a part of CSS HTML Validator) with parallel compilation was I thought the performance was very impressive. I hope it will be equally impressive when I compile the main EXE and DLL with the new compiler.
Why Build Your Own Machine?
I like to build my own machines because I find it enjoyable. I like doing the research, picking out the individual components, and putting it together. I don't do it because of the cost. It's definitely more expensive for me to build a computer with what I want than to simply buy one off the shelf.
Building my own machine lets me research the parts that I want, choosing high quality and high performance components. My philosophy when building a new development computer is to get a "high end" computer but not the "highest end" where you pay a lot more for a little gain in performance. For example, I chose the new X299 platform and i7-7820X CPU because I thought it would make for a powerful machine without spending a small fortune. I think the 7820X is at a 'sweet spot' of power and performance, but of course this depends on your budget and what you'll be using it for.
Building your own machine can also be very time consuming. It takes a lot of time to research to pick out the parts and put the system hardware together. If you're fortunate, it works without any major problems, but I've put together systems before that have had serious issues that took days to figure out. Sometimes you may have to get new parts (after you figure out which part is bad!). After the hardware is put together and working, it can take a long time to get the software right too, depending on what you use. If you're upgrading the OS at the same time, then some applications might not work or you might want to switch to other applications or new versions. Fortunately, for this build, I did not encounter any major issues (at least not yet!). For the most part, things are working as expected and I've only had minor issues. When you build your own machine, you'd be extremely lucky if you didn't even run into any 'minor' issues. Just hope you don't run into any 'major' issues that could take days to figure out.
For the processor, I chose a CPU in the middle of the X299 Intel CPU lineup - the "Intel Core i7-7820X 8-Core 3.6 GHz LGA 2066 140W BX80673I77820X Desktop Processor" (purchased from Newegg). I considered an 8 core AMD Ryzen processor like the 1800X and even Threadripper but some compiling benchmarks I saw plus the single threaded performance advantage of Intel, and Intel being the "safer" choice over AMD (more well tested), made me choose the 7820X as the best CPU for me for the money.
At about $600 bucks (retail price) this is the most expensive CPU I've ever purchased (and the most expensive component of the computer), but if it significantly improves compile time then it will be worth it, especially since I hope to use this system for 4-5 years as my primary development system. On an interesting note, at the time I built this machine, this CPU was often not in stock and was selling for more than the retail price but I waited to buy it until it came down to the retail price from a reputable seller like Newegg.
And on a side note, I was surprised at how small the CPU box was and the shipping box that it came in. I'm glad it made it here safely.
For the case, I went with the well-reviewed "Fractal Design Define R5 Blackout Silent ATX Mid Tower Computer Case" (purchased from Newegg through eBay). I was very pleased with this case although it only comes with 2 case fans so I added 2 "Noctua NF-P14s redux-1200 PWM 140x140x25 mm Case Fan" fans for better cooling. Even with all the fans (there are a total of 9 of them!), this case is the one of the quietest I've ever had (but a big part of that is that the fans are quiet).
I also really like the configurability of the case. You can move or remove drive cages that you don't need (I removed 2 because I only need space for 1x 3.5" hard drive). You can also position up to 2x 2.5" SSD drives behind the motherboard panel. I placed my Samsung 850 SSD drive there where it was "out of the way".
In case you are wondering, the 9 fans include 4 case fans (two intake and two exhaust), 1 MB fan, 1 CPU fan, 2 video card fans, and 1 power supply fan.
For the power supply, I went with a "Seasonic Flagship Prime Series SSR-650GD 650W Gold Full Modular ATX12V & EPS12V 135mm FDB Fan Super Quiet Power Supply" power supply (purchased from Newegg). Seasonic makes some of the best power supplies and they back this one up with a whopping 12 year warranty. The only downside is that they don't come cheap.
On a side note, it's not better to get a more powerful power supply than you really need. It's better to 'right size' the power supply so it operates in a power range that will give you better efficiency.
For the motherboard, I bought an "ASUS TUF X299 MARK I LGA2066 DDR4 M.2 USB 3.1 DUAL LAN X299 ATX Motherboard for Intel Core X-Series Processors" (purchased from Amazon.com mainly due to fast shipping and easy returns in case anything went wrong). This motherboard has all the basics, including dual Intel NICs. I especially like it for the high grade components and 5 year warranty. It's suppose to be built to last. There's also a MARK 2 that is cheaper but because I thought I might do some overclocking I bought the MARK I because it has a better CPU power delivery system ("8 +2 Digital Phase Power Design" on the TUF MARK 1 vs "7 +1 Digital Phase Power Design" on the TUF MARK 2).
The i7-7820X does not come with a CPU cooler so you will need to buy one. I looked at reviews and chose to buy the "Noctua NH-U14S 140mm SSO2-Bearing (Self-stabilising oil-presure bearing) CPU Cooler" (purchased from Newegg). I also did not want to use water cooling which is more expensive and something I've never done before. Plus, water cooling just doesn't seem worth it compared to an excellent air cooler. Unfortunately it seems that overclocking a 140W 7820X CPU with this cooler isn't a very good idea. For overclocking you may want to use a water cooler or a NH-D15 because the 7820X can use quite a bit of power and generate quite a bit of heat when overclocking.
By the way, the X299 processors use an LGA2066 socket, but the heatsink mounting mechanism for that socket is identical to the one on LGA2011, so any LGA2011 compatible CPU cooler should work.
For DDR4 RAM I bought "G.SKILL TridentZ Series 32GB (4 x 8GB) 288-Pin DDR4 SDRAM DDR4 3600 (PC4 28800) Intel X299 / Intel Z270 Platform Desktop Memory Model F4-3600C16Q-32GTZKK" (purchased from Newegg) so I can run in quad channel mode. This is DDR4 3600 (PC4 28800) with timings of 16-16-16-36 @ 1.35V. The RAM passed hours of testing with memtest and has a lifetime warranty. I did have to go into the UEFI BIOS and select the XMP profile to get the rated RAM speeds otherwise it will run slower.
My previous system only had 16GB but that was plenty. I don't expect 32GB to pose any issues for as long as I use this computer.
I love lots of monitors and use 5 monitors. In my previous build I used an NVIDIA GTX 960 card (Gigabyte GTX 960 Overclocked 2GB GDDR5 Graphics Cards GV-N960WF2OC-2GD) to run 4 monitors and a USB display adapter for a 5th monitor and it worked well enough. I was going to get a 6GB GTX 1060 card for the new build but the digital currency mining craze has really ran up the prices on the card I wanted so I am using the good old 960 card in my new system until I can get a good deal on a new 6GB GTX 1060 card (I will probably get a "MSI GAMING X GeForce GTX 1060 6GB GDDR5 DirectX 12 VR Ready" card).
I'm also using a "MSI GT 1030 2GH LP OC Graphic Cards" card to run a 5th monitor instead of the USB display adapter I used on my previous computer. I like that card because there is no fan, it's low power, relatively inexpensive, allows color profiles (unlike the USB display adapter), and has a DisplayPort connector unlike other brands of GT 1030 cards. UPDATE 2018-03-25: In order to make room for a new Intel Optane 900P SSD drive, I have removed the 1030 video card and am now back to using a USB display adapter (which uses a DisplayLink chip) to power my 5th monitor (instead of the 1030 card). I found a registry 'hack' that even allows the USB connected monitors to support Windows 10 "night light" mode (I don't know why this wasn't enabled by default).
UPDATE 2017-09-26: I found a good price on an "EVGA GeForce GTX 1060 6GB SSC GAMING ACX 3.0, 6GB GDDR5, LED, DX12 OSD Support (PXOC) Graphics Card 06G-P4-6267-KR" and upgraded my 960 2GB card to the 1060 6GB card. The 1060 card has only one DVI output while the 960 card had 2 DVI outputs (which I was both using). No problem I thought, I'll just switch to DisplayPort. Well, let me just say that DisplayPort has been problematic... from monitors not being recognized (either never or only occasionally) to wrong resolutions and even to blue screens of death when I plugged in a DisplayPort cable for a new monitor. It cost me hours of time. There must be bugs when running multiple DisplayPort monitors, especially 4 of them. I was not pleased. And yes, I tried multiple cables. Fortunately I finally did find something that works most of the time - two 1920x1200 monitors on one DisplayPort output (chained), my main monitor (2560x1600) on the single dual-link DVI port and my other 2560x1600 monitor on another DisplayPort connection (though the first DisplayPort port on the video card I tried didn't seem to be stable so I switched to another port).
By the way, like the 960 card, the 1060 card still supports only 4 monitors so I still need the 1030 card for the 5th monitor. This is true even if you use DisplayPort chaining. A workaround (which I haven't tried) would be to buy a DisplayPort Multi Stream Transport (MST) splitter type device that can make multiple monitors appear as one monitor to Windows and the video card. The downside to this (at least for me) is that when you maximize a window it would then maximize across multiple monitors instead of a single monitor, and that's not how I like it to work.
OS & Application Drive
For the OS and application drive, I chose the "Samsung MZ-V6P512BW 960 PRO Series 512GB PCIe NVMe M.2 Internal Solid State Drive" (purchased from a seller on Walmart.com). Samsung makes some of the best and fastest SSDs and this PCIe NVMe M.2 SSD benchmarks significantly higher than any SATA SSD. However, for "typical" computer use it would be hard to tell the different between this PCIe NVMe M.2 SSD and a fast SATA SSD.
For a "temp drive", I am using a 128GB partition on a Western Digital 1TB black drive as the "T" drive (for temporary) that I bought for just a little over $50. Because SSD's can wear out and frequent compiling and development of CSS HTML Validator creates lots of temp files and writing to disk, I like to use a real HD for this to take some of the wear off the expensive SSD. I don't think this affects performance much because of the way Windows 10 caches files, and it's nice to have a "T" drive to only store temporary stuff. UPDATE 2018-03-25: I have disconnected this mechanical drive and replaced it with an Intel Optane 900P SSD drive.
For a local storage and backup drive, I bought a 500GB Samsung 850 SSD. Because my OS and local storage drive are both Samsung SSD drives, I can use Samsung Magician (Samsung's SSD utility) to check and update both drives.
For other storage I now use a QNAP NAS.
Intel Optane 900P SSD Drive
On 2018-03-24 I added an Intel 900P SSD drive and disconnected the mechanical drive. I had to remove the 2nd video card (the 1030 card) in order to make room for it and start using my USB display adapter again for my 5th monitor but that wasn't a big issue.
The Intel 900P uses a new type of non-volatile memory technology (3D XPoint ("cross-point")) that is lightning fast (compared to NAND) while also providing a significant boost in endurance (10 DWPD (drive writes per day) vs 0.3 which is typical for NAND based SSDs). I moved my Outlook PST file to it as well as my source code and temp drive. I also moved Chrome's cache folder to it (by setting up a junction to a folder on the Optane SSD).
Performance seems a little snappier and it's nice not to have any mechanical drives in my development machine or worry about drive endurance. The drive is only 280GB but that is plenty for only putting heavily used files and folders on it.
This is the first "expensive" computer that I've built without a DVD/Blu-ray drive because it's almost never used anymore. If I ever need a DVD/Blu-ray drive then I'll just hook up my USB one.
Some other components I'm using include a "Logitech Illuminated Ultrathin Keyboard K740", a Logitech G502 mouse, and a "Logitech C922 Pro Stream Webcam 1080P Camera". I also use a USB drive dock. I highly recommend drive docks for techies.
I'm also using the same monitors as I did with my old system which include 2x Dell U3014's, 2x Dell U2415's and 1 Dell U2412M. I use DisplayCAL and an "X-Rite i1Display Pro" so that monitor brightness and color are consistent because it would be too distracting if the monitors had inconsistent brightness or colors.
Moving to a new computer can be very time consuming, and most of that time (assuming there are no hardware problems that you need to solve first) is the installation and configuration of software and drivers (and fixing problems). Here is some software that I am using on my new build:
* Windows 10 Pro (x64)
* Chrome (my primary browser), and other browsers for testing (Edge, Firefox, IE, etc.)
* Microsoft Office 365
* Embarcadero RAD Studio 10.2.1 Tokyo (w/Update 1)
* Lots of programming components
* Directory Opus 12 by GP Software for file management
* PhraseExpander 22.214.171.124 by Nagarsoft to cut down on typing - very handy
* FinePrint 8 and pdfFactory 5 - great printing utilities
* ACDSee Ultimate 10 for image browsing and some editing
* Adobe Photoshop Elements 14
* PuTTY for secure access to servers
* EmEditor (a text editor)
* DisplayCAL monitor calibration software - I consider this a "necessity" when using multiple monitors when they are different models. This makes the whites look the same and the colors better. If you don't use color profiles, then the whites on the monitors can be very noticeably different. It also helps you set each monitor's brightness at the same level.
* CPU-Z & HWMonitor to monitor system stats like CPU speed, fan speed, temperatures, and more
* WordWeb Pro 8.1
* 7-Zip File Manager 16.04
* & more
Parallel Compilation Chart
I did a build test, building 'cse.exe' with 1 to 16 subprocesses to see which was the fastest and to measure the decrease in build time by using more cores. Note that the beginning (compiling the headers) and end of the build process (linking) are single-core functions so more cores won't help there (but single-threaded performance sure does).
Build time decreases significantly at first, then levels off.
WEI (Windows Experience Index) Scores
For whatever it's worth these days (anything?), below are the Windows 10 scores for this system (see https://www.tenforums.com/tutorials/820 ... -10-a.html).
NOTE: The below is with a GTX 960 video card (I haven't upgraded to a GTX 1060 yet).
Base score: 8.6
It looks like the graphics card is holding me back, but I don't think this benchmark matters all that much.
In the Near Future
I currently don't have any further updates or upgrades planned for the machine nor can I currently foresee any down the line.
Click on an image to see it original size. Photos of my previous builds were take with digital SLR cameras but phone cameras are so good nowadays that I just snapped these with my LG G5 Android phone because they are "good enough".