comparing PCs with terminal commands # source
I was given an old computer. I'd quite like to make a computer to use in my studio, and take my tower PC home to play video games (mainly/only local coop games like Wilmot's Warehouse, Towerfall Ascension, or Unrailed, and occasionally Gloomhaven).
It's not the best, and I'd like to know what parts I would want to replace to make it suit my needs (which are vaguely "can use a modern web browser" without being slow).
By searching the web, I found these commands to collect hardware information for a computer:
uname -a # vague computer information
lscpu # cpu information
df -h # hard drive information
sudo dmidecode -t bios # bios information
free -h # memory (RAM) info
lspci -v | grep VGA -A11 # GPU info (1)
sudo lshw -numeric -C display # GPU info (2)
I also found these commands to benchmark some things:
sudo apt install sysbench glmark2
# benchmark CPU
sysbench --test=cpu run
# benchmark memory
sysbench --test=memory run
# benchmark graphics
glmark2
I put the output of all of these commands into text files for each computer, into a directory that looks like:
├── ./current
│ ├── ./current/benchmarks
│ │ ├── ./current/benchmarks/cpu
│ │ ├── ./current/benchmarks/gpu
│ │ └── ./current/benchmarks/memory
│ ├── ./current/bios
│ ├── ./current/cpu
│ ├── ./current/disks
│ ├── ./current/gpu
│ ├── ./current/memory
│ └── ./current/uname
└── ./new
├── ./new/benchmarks
│ ├── ./new/benchmarks/cpu
│ ├── ./new/benchmarks/gpu
│ └── ./new/benchmarks/memory
├── ./new/bios
├── ./new/cpu
├── ./new/disks
├── ./new/gpu
├── ./new/memory
└── ./new/uname
4 directories, 19 files
Then, I ran this command to generate a diff file to look at:
echo "<html><head><style>html {background: black;color: white;}del {text-decoration: none;color: red;}ins {color: green;text-decoration: none;}</style></head><body>" > compare.html
while read file; do
f=$(echo "${file}" | sed 's/current\///')
git diff --no-index --word-diff "current/${f}" "new/${f}" \
| sed 's/\[\-/<del>/g' | sed 's/-\]/<\/del>/g' \
| sed -E 's/\{\+/<ins>/g' | sed -E 's/\+\}/<\/ins>/g' \
| sed '1s/^/<pre>/' | sed '$a</pre>'
done <<< $(find current/ -type f) >> compare.html
echo "</body></html>" >> compare.html
then I could open that html file and look very easily at the differences between the computers. Here is a snippet of the file as an example:
CPU(s):126 On-line CPU(s) list:0-110-5 Vendor ID:AuthenticAMDGenuineIntel Model name:AMD Ryzen 5 1600 Six-Core ProcessorIntel(R) Core(TM) i5-9400F CPU @ 2.90GHz CPU family:236 Model:1158 Thread(s) per core:21 Core(s) per socket: 6 Socket(s): 1
Latency (ms): min:0.550.71 avg:0.570.73 max:1.621.77 95th percentile:0.630.74 sum:9997.519998.07
glmark2 2021.02 ======================================================= OpenGL Information GL_VENDOR:AMDMesa GL_RENDERER:AMD Radeon RX 580 Series (radeonsi, polaris10, LLVM 15.0.7, DRM 3.57, 6.9.3-76060903-generic)NV106 GL_VERSION:4.64.3 (Compatibility Profile) Mesa 24.0.3-1pop1~1711635559~22.04~7a9f319 ... [loop] fragment-loop=false:fragment-steps=5:vertex-steps=5: FPS:9303213 FrameTime:0.1074.695 ms [loop] fragment-steps=5:fragment-uniform=false:vertex-steps=5: FPS:8108144 FrameTime:0.1236.944 ms [loop] fragment-steps=5:fragment-uniform=true:vertex-steps=5: FPS:7987240 FrameTime:0.1254.167 ms ======================================================= glmark2 Score:7736203
It seems like the big limiting factor is the GPU. Everything else seems reasonable to leave in there.
As ever, I find git diff --no-index
a highly invaluable tool.