3

关于旧电脑的使用探索

 4 weeks ago
source link: https://mabbs.github.io/2024/04/06/old-pc.html
Go to the source link to view the article. You can view the picture content, updated content and better typesetting reading experience. If the link is broken, please click the button below to view the snapshot at that time.

6 April 2024 - 字数统计:10667 - 阅读大约需要31分钟 - Hits: Loading...

关于旧电脑的使用探索

by mayx


性能差也不一定要淘汰!

最近我偶然得到了几台淘汰的废旧电脑,试着重新拼装了一下,发现还有4台电脑还能开机,所以我想试试看这些旧电脑除了性能以外有什么该被淘汰的地方。

测试平台介绍

本次测试的4台电脑为了方便操作,我都装了Linux发行版,Windows的话想要登录还要远程桌面太麻烦了,以下是这些电脑的配置:
一、装有 Intel® Pentium® E5300 CPU的电脑

                 ..                    [email protected] 
               .PLTJ.                  -------------------------- 
              <><><><>                 OS: CentOS Stream 8 x86_64 
     KKSSV' 4KKK LJ KKKL.'VSSKK        Host: G31M-ES2C 
     KKV' 4KKKKK LJ KKKKAL 'VKK        Kernel: 6.8.1-1.el8.elrepo.x86_64 
     V' ' 'VKKKK LJ KKKKV' ' 'V        Uptime: 2 days, 19 hours, 11 mins 
     .4MA.' 'VKK LJ KKV' '.4Mb.        Packages: 953 (rpm) 
   . KKKKKA.' 'V LJ V' '.4KKKKK .      Shell: bash 4.4.20 
 .4D KKKKKKKA.'' LJ ''.4KKKKKKK FA.    Terminal: /dev/pts/2 
<QDD ++++++++++++  ++++++++++++ GFD>   CPU: Pentium E5300 (2) @ 2.600GHz 
 'VD KKKKKKKK'.. LJ ..'KKKKKKKK FV     GPU: Intel 82G33/G31 Express 
   ' VKKKKK'. .4 LJ K. .'KKKKKV '      Memory: 597MiB / 2969MiB 
      'VK'. .4KK LJ KKA. .'KV'
     A. . .4KKKK LJ KKKKA. . .4                                
     KKA. 'KKKKK LJ KKKKK' .4KK                                
     KKSSA. VKKK LJ KKKV .4SSKK
              <><><><>
               'MKKM'
                 ''

二、装有 AMD Athlon™ II X4 641 CPU 和 NVIDIA GeForce GT 440 的电脑

            .-/+oossssoo+/-.               mayx@mayx-server 
        `:+ssssssssssssssssss+:`           ---------------- 
      -+ssssssssssssssssssyyssss+-         OS: Ubuntu 20.04.6 LTS x86_64 
    .ossssssssssssssssssdMMMNysssso.       Kernel: 5.4.0-174-generic 
   /ssssssssssshdmmNNmmyNMMMMhssssss/      Uptime: 1 day, 23 hours, 13 mins 
  +ssssssssshmydMMMMMMMNddddyssssssss+     Packages: 1276 (dpkg), 4 (snap) 
 /sssssssshNMMMyhhyyyyhmNMMMNhssssssss/    Shell: bash 5.0.17 
.ssssssssdMMMNhsssssssssshNMMMdssssssss.   Terminal: /dev/pts/0 
+sssshhhyNMMNyssssssssssssyNMMMysssssss+   CPU: AMD Athlon II X4 641 (4) @ 2.800GHz 
ossyNMMMNyMMhsssssssssssssshmmmhssssssso   GPU: NVIDIA GeForce GT 440 
ossyNMMMNyMMhsssssssssssssshmmmhssssssso   Memory: 242MiB / 7925MiB 
+sssshhhyNMMNyssssssssssssyNMMMysssssss+
.ssssssssdMMMNhsssssssssshNMMMdssssssss.                           
 /sssssssshNMMMyhhyyyyhdNMMMNhssssssss/                            
  +sssssssssdmydMMMMMMMMddddyssssssss+
   /ssssssssssshdmNNNNmyNMMMMhssssss/
    .ossssssssssssssssssdMMMNysssso.
      -+sssssssssssssssssyyyssss+-
        `:+ssssssssssssssssss+:`
            .-/+oossssoo+/-.

三、装有 Intel® Pentium® G3240 CPU的电脑

            .-/+oossssoo+/-.               mayx@mayx-server 
        `:+ssssssssssssssssss+:`           ---------------- 
      -+ssssssssssssssssssyyssss+-         OS: Ubuntu 22.04.4 LTS x86_64 
    .ossssssssssssssssssdMMMNysssso.       Host: H81M-S1 
   /ssssssssssshdmmNNmmyNMMMMhssssss/      Kernel: 5.15.0-101-generic 
  +ssssssssshmydMMMMMMMNddddyssssssss+     Uptime: 2 days, 19 hours, 58 mins 
 /sssssssshNMMMyhhyyyyhmNMMMNhssssssss/    Packages: 984 (dpkg), 6 (snap) 
.ssssssssdMMMNhsssssssssshNMMMdssssssss.   Shell: bash 5.1.16 
+sssshhhyNMMNyssssssssssssyNMMMysssssss+   Terminal: /dev/pts/3 
ossyNMMMNyMMhsssssssssssssshmmmhssssssso   CPU: Intel Pentium G3240 (2) @ 3.100GHz 
ossyNMMMNyMMhsssssssssssssshmmmhssssssso   GPU: Intel HD Graphics 
+sssshhhyNMMNyssssssssssssyNMMMysssssss+   Memory: 371MiB / 3800MiB 
.ssssssssdMMMNhsssssssssshNMMMdssssssss.
 /sssssssshNMMMyhhyyyyhdNMMMNhssssssss/                            
  +sssssssssdmydMMMMMMMMddddyssssssss+                             
   /ssssssssssshdmNNNNmyNMMMMhssssss/
    .ossssssssssssssssssdMMMNysssso.
      -+sssssssssssssssssyyyssss+-
        `:+ssssssssssssssssss+:`
            .-/+oossssoo+/-.

四、装有 Intel® Xeon® E5-2620 CPU的电脑

            .-/+oossssoo+/-.               mayx@mayxserver 
        `:+ssssssssssssssssss+:`           --------------- 
      -+ssssssssssssssssssyyssss+-         OS: Ubuntu 22.04.4 LTS x86_64 
    .ossssssssssssssssssdMMMNysssso.       Host: X79 0.9 
   /ssssssssssshdmmNNmmyNMMMMhssssss/      Kernel: 5.15.0-101-generic 
  +ssssssssshmydMMMMMMMNddddyssssssss+     Uptime: 18 hours, 41 mins 
 /sssssssshNMMMyhhyyyyhmNMMMNhssssssss/    Packages: 773 (dpkg), 9 (snap) 
.ssssssssdMMMNhsssssssssshNMMMdssssssss.   Shell: bash 5.1.16 
+sssshhhyNMMNyssssssssssssyNMMMysssssss+   Terminal: /dev/pts/0 
ossyNMMMNyMMhsssssssssssssshmmmhssssssso   CPU: Intel Xeon E5-2620 0 (12) @ 2.500GHz 
ossyNMMMNyMMhsssssssssssssshmmmhssssssso   Memory: 8773MiB / 11928MiB 
+sssshhhyNMMNyssssssssssssyNMMMysssssss+
.ssssssssdMMMNhsssssssssshNMMMdssssssss.                           
 /sssssssshNMMMyhhyyyyhdNMMMNhssssssss/                            
  +sssssssssdmydMMMMMMMMddddyssssssss+
   /ssssssssssshdmNNNNmyNMMMMhssssss/
    .ossssssssssssssssssdMMMNysssso.
      -+sssssssssssssssssyyyssss+-
        `:+ssssssssssssssssss+:`
            .-/+oossssoo+/-.

其实对我来说,性能根本不是什么问题,毕竟想想即使是这些淘汰的电脑,性能也比树莓派强的多,包括对比上次买的Luckfox Pico Plus来说就强的更多了,所以即使性能比较差的电脑也不是不能用。
不过这些老机器还是有一些坑的,像第一台奔腾E5300的电脑,我试了一下Ubuntu就装不上,安装程序都打不开,可能还是有一些有差别的地方,所以安装了CentOS Stream 8。不过还好这些机器都是64位的CPU,如果是32位的就更麻烦了,可能很多包都没地方下载。

关于Darling的探索

那么对于这些机器来说干点什么好呢?当然除了GPIO之类的,树莓派能干的他们也能干,所以要干就干一些特别的东西。我想了一下,我平时用的电脑是macOS系统,虽然给那些旧电脑装黑苹果可能不太现实,但是我之前发现了一个叫Darling的项目,类似Wine那样在Linux上运行Windows程序,这个项目可以在Linux上运行macOS的程序。看起来挺有意思的,所以我打算在第一台机器上试着安装一下。
不过我按照官方文档上安装,对于CentOS Stream 8来说有好多包不知道为什么似乎都没有,比如libavformat-free-devel之类的,我只好从网上找其他RedHat系列类似的包,或者找替代品FFmpeg,另外Darling需要Linux 5.0或者更高的内核,CentOS的内核版本太低了,所以我升到了主线版本的Linux,也就是6.8的版本……最终花了一天的时间终于编译好了,然而悲剧的是运行的时候报了非法指令“Illegal instruction (core dumped)”的错误。一般来说这个错误是新机器上编译的程序在旧机器运行才会报的错,可我是在同一台机器上编译的为什么会报这种错误呢?可能是因为代码里包含汇编语言的代码吧。我发了个Issue问了一下作者,不过看起来他也不知道是什么问题……
对于这种问题我感觉也没什么好办法……可能这台机器真的就没办法了?在第二台速龙641的电脑上试了一下也不行……不过后来我在第三台装有奔腾G3240的电脑上试着编译安装了一下,结果可以运行。看来确实是奔腾E5300的问题。不过它俩到底差在哪里呢?看介绍会发现奔腾G3240里包含了Intel® SSE4.1和Intel® SSE4.2的指令集扩展。那么对于没有这个指令集扩展的CPU就没办法了吗?Intel官方给了一个解决方法是Intel® SDE,可以在旧机器上模拟运行使用了最新指令集的程序,甚至包括AVX512都可以模拟的出来,但是我用这个东西运行Darling的时候还是报错了,可能Darling需要用到内核的一些特性,但是SDE不能模拟……这都没办法是不是就彻底没办法了呢?
在偶然的一次浏览中,我发现了一个神奇的东西,内核扩展OPEMU,它可以让不支持一些指令集扩展的CPU通过模拟的方式支持,其实功能和SDE很像,只是它是在内核中运行的,我试着在第一台机器上编译安装了一下(顺便一说,如果是旧的5.x或者更早的Linux可以直接用这个仓库,而更新的Linux比如6.x的需要用PR中的这个仓库),结果Darling真的可以运行了!真是令人难以置信。
安装成功之后我在网上找了个C语言的程序:endoh1,这个程序可以用文本模拟流体。我在我的MacBook上编译了试了一下,运行没有问题,当然直接编译的程序是ARM64的程序,肯定不能在Darling里面运行,于是我切换到x86_64模式下又编译了一次,并且用lipo命令把两个程序合并到了一起,然后把程序上传到第一台机器中使用Darling运行,竟然可以正常运行,看来那个内核扩展还不错啊,Darling居然没有出问题。
不过测试了一下,可能还是有些地方有BUG,比如用Git的时候会报错,可能是和README中所说的CRC32表现有问题吧,不过Darling好像可以直接运行Linux中的命令,那我在用Git的时候调用Linux下的Git是不是也可以呢?试了一下不太行,因为执行Linux程序的时候不能用Darling中的目录结构,不过我想装omz只需要/Users目录就够了,我直接创建一个软链接把Darling的/Users目录映射到Linux的根目录就可以了吧,试了一下还行,可以正常运行,虽然Homebrew不能安装有点可惜……不过Neofetch可以安装😆,效果如下:

                    'c.          [email protected] 
                 ,xNMM.          -------------------------- 
               .OMMMMo           OS: macOS 11.7.4 Darling x86_64 
               OMMM0,            Kernel: 20.6.0 
     .;loddo:' loolloddol;.      Uptime: 2 days, 21 hours, 11 mins 
   cKMMMMMMMMMMNWMMMMMMMMMM0:    Shell: bash 3.2.57 
 .KMMMMMMMMMMMMMMMMMMMMMMMWd.    DE: Aqua 
 XMMMMMMMMMMMMMMMMMMMMMMMX.      WM: Quartz Compositor 
;MMMMMMMMMMMMMMMMMMMMMMMM:       WM Theme: Blue (Print: Entry, AppleInterfaceStyle, Does Not Exist) 
:MMMMMMMMMMMMMMMMMMMMMMMM:       Terminal: /dev/pts/2 
.MMMMMMMMMMMMMMMMMMMMMMMMX.      Memory: 0MiB / 2969MiB 
 kMMMMMMMMMMMMMMMMMMMMMMMMWd.
 .XMMMMMMMMMMMMMMMMMMMMMMMMMMk                           
  .XMMMMMMMMMMMMMMMMMMMMMMMMK.                           
    kMMMMMMMMMMMMMMMMMMMMMMd
     ;KMMMMMMMWXXWMMMMMMMk.
       .cooc,.    .,coo:.

既然第一台电脑装了内核扩展还是有BUG,那么对于第三台电脑来说总该没问题了吧,试了一下Git可以正常运行,安装Homebrew也没问题,但是用brew安装软件的时候会报错,似乎是因为Darling安装的Command Line Tools for Xcode太旧了,有些命令没有所以不能正常安装,不过Neofetch又不需要编译,试着安装了一下没问题,但是运行的时候会报Segmentation fault: 11 (core dumped)的错误……不知道是什么问题。

关于旧显卡利用的探索

对于第二台电脑,可以看出来它有一张上古的独显NVIDIA GeForce GT 440,我装好驱动之后运行nvidia-smi可以看到:

Sat Apr  6 08:26:45 2024       
+------------------------------------------------------+                       
| NVIDIA-SMI 340.108    Driver Version: 340.108        |                       
|-------------------------------+----------------------+----------------------+
| GPU  Name        Persistence-M| Bus-Id        Disp.A | Volatile Uncorr. ECC |
| Fan  Temp  Perf  Pwr:Usage/Cap|         Memory-Usage | GPU-Util  Compute M. |
|===============================+======================+======================|
|   0  GeForce GT 440      Off  | 0000:01:00.0     N/A |                  N/A |
| 40%   49C    P0    N/A /  N/A |      3MiB /  1023MiB |     N/A      Default |
+-------------------------------+----------------------+----------------------+
                                                                               
+-----------------------------------------------------------------------------+
| Compute processes:                                               GPU Memory |
|  GPU       PID  Process name                                     Usage      |
|=============================================================================|
|    0            Not Supported                                               |
+-----------------------------------------------------------------------------+

既然是独显,那么果然还是想试试看能不能跑机器学习的算法呢。可是一般来说执行上面的命令可以看到显卡支持的CUDA版本,这个执行完并没有显示啊……那我要怎么用?首先我想试试装个PaddleOCR试试看,但就是因为不知道这个显卡到底能用哪个版本的CUDA,也不知道安装哪个版本的PaddlePaddle框架,更何况之前的机器学习算法对环境要求特别严格,甚至系统新了都没法用,于是在各种报错下我败下阵来,放弃使用CUDA来用这张显卡😭……
但并不代表机器学习必须使用CUDA,OpenCL也是可以的啊,正好我之前在测试OpenAI的ASR模型Whisper,有人开发的一个C++使用这个模型的软件whisper.cpp是支持通过CLBlast使用OpenCL。于是我就先编译安装了CLBlast,然后用对应的参数编译了whisper.cpp,总算是能跑起来了,后来看了一眼clinfo,原来这张显卡才支持CUDA 6.5啊,这能运行啥啊……最后试了一下效果也挺令人失望的,就测试的那个音频用了大概33秒左右才转录完成,果然旧显卡就是纯粹的垃圾啊。

关于Anbox Cloud的探索

现在轮到第四台至强E5-2620的电脑了呢,这台电脑可不一般,用的是服务器上用的CPU,一看就是被奸商坑了,买了个i9级处理器,殊不知是淘汰的洋垃圾🤣。不过我手头用的服务器其实也没多好,一台是至强E5-2620v2(双路),另一台是至强E5-2620v3(也是双路)(一二三代都有了🤣):

            .-/+oossssoo+/-.               mayx@mayx-server 
        `:+ssssssssssssssssss+:`           ---------------------- 
      -+ssssssssssssssssssyyssss+-         OS: Ubuntu 22.04.3 LTS x86_64 
    .ossssssssssssssssssdMMMNysssso.       Host: NF5270M3 00001 
   /ssssssssssshdmmNNmmyNMMMMhssssss/      Kernel: 5.15.0-78-generic 
  +ssssssssshmydMMMMMMMNddddyssssssss+     Uptime: 84 days, 22 hours, 20 mins 
 /sssssssshNMMMyhhyyyyhmNMMMNhssssssss/    Packages: 954 (dpkg), 4 (snap) 
.ssssssssdMMMNhsssssssssshNMMMdssssssss.   Shell: bash 5.1.16 
+sssshhhyNMMNyssssssssssssyNMMMysssssss+   Resolution: 1440x900 
ossyNMMMNyMMhsssssssssssssshmmmhssssssso   Terminal: /dev/pts/1 
ossyNMMMNyMMhsssssssssssssshmmmhssssssso   CPU: Intel Xeon E5-2620 v2 (24) @ 2.600GHz 
+sssshhhyNMMNyssssssssssssyNMMMysssssss+   GPU: 0b:00.0 ASPEED Technology, Inc. ASPEED Graphics Family 
.ssssssssdMMMNhsssssssssshNMMMdssssssss.   Memory: 68987MiB / 128875MiB 
 /sssssssshNMMMyhhyyyyhdNMMMNhssssssss/
  +sssssssssdmydMMMMMMMMddddyssssssss+                             
   /ssssssssssshdmNNNNmyNMMMMhssssss/                              
    .ossssssssssssssssssdMMMNysssso.
      -+sssssssssssssssssyyyssss+-
        `:+ssssssssssssssssss+:`
            .-/+oossssoo+/-.

            .-/+oossssoo+/-.               mayx@mayx-algo-server 
        `:+ssssssssssssssssss+:`           --------------------- 
      -+ssssssssssssssssssyyssss+-         OS: Ubuntu 22.04.3 LTS x86_64 
    .ossssssssssssssssssdMMMNysssso.       Host: PowerEdge R730 
   /ssssssssssshdmmNNmmyNMMMMhssssss/      Kernel: 5.15.0-91-generic 
  +ssssssssshmydMMMMMMMNddddyssssssss+     Uptime: 84 days, 20 hours, 16 mins 
 /sssssssshNMMMyhhyyyyhmNMMMNhssssssss/    Packages: 1047 (dpkg), 4 (snap) 
.ssssssssdMMMNhsssssssssshNMMMdssssssss.   Shell: bash 5.1.16 
+sssshhhyNMMNyssssssssssssyNMMMysssssss+   Resolution: 1024x768 
ossyNMMMNyMMhsssssssssssssshmmmhssssssso   Terminal: /dev/pts/1 
ossyNMMMNyMMhsssssssssssssshmmmhssssssso   CPU: Intel Xeon E5-2620 v3 (24) @ 3.200GHz 
+sssshhhyNMMNyssssssssssssyNMMMysssssss+   GPU: NVIDIA Tesla T4 
.ssssssssdMMMNhsssssssssshNMMMdssssssss.   GPU: NVIDIA Tesla T4 
 /sssssssshNMMMyhhyyyyhdNMMMNhssssssss/    Memory: 66345MiB / 128808MiB 
  +sssssssssdmydMMMMMMMMddddyssssssss+
   /ssssssssssshdmNNNNmyNMMMMhssssss/                              
    .ossssssssssssssssssdMMMNysssso.                               
      -+sssssssssssssssssyyyssss+-
        `:+ssssssssssssssssss+:`
            .-/+oossssoo+/-.

都是正儿八经的洋垃圾,不过对于服务器嘛,垃圾一点也没什么,又不是不能用,至少比租的云服务器好吧。
不过既然是服务器级的CPU,自然实验也得要符合服务器级(这个级别的处理器就不用担心什么指令集缺失之类的问题了),正好最近注册了个Ubuntu Pro,里面有个Anbox Cloud,可以拿来试试看。
关于Anbox,我之前试过Waydroid和redroid,不过Anbox Cloud不太一样,这个有点像OpenStack那样,是云手机的管理和实现平台,Anbox对它来说就像QEMU对OpenStack,是创建实例的工具。安装还挺简单的,启用Ubuntu Pro之后再执行sudo pro enable anbox-cloud,剩下的跟着提示走就行了,不过因为我的硬盘有点问题,有一半的区域有坏块,虽然屏蔽掉了但还是有些问题,第一次安装失败了,第二次才成功。不过应该说不愧是云平台吗,用起来和我当年学OpenStack在虚拟机里安装一样卡,而且啥也没干先占掉8GiB内存,尤其是对这个又老,内存也小的垃圾旧机器来说果然还是有点勉强啊,更何况硬盘还是坏的🤣。安装好之后用浏览器直接输入IP就能登录平台了,第一次使用要绑定Ubuntu One账号,感觉有点不开放啊……登录之后可以上传应用作为模板,类似镜像那样,可以在创建会话的时候使用相同的镜像,然后每个会话之间是隔离的。不过有个问题是这个东西居然没有ARM兼容层,上传不兼容x86_64的软件会不允许创建应用😅,这有点废物啊,难不成想用这个东西搭个云手机厂商还要买一堆ARM的服务器?之后我找了半天发现Via浏览器可以兼容所有架构的处理器,上传上去之后又报错一次😅,重新再上传才算正常运行起来了。

经过这次的测试,可以看出来这些旧电脑其实安装了Linux发行版之后除了会遇到一堆莫名其妙的问题之外,并不是不能用,顶多是卡了一些,或者要花点精力解决罢了。其实这么看来,除了人工智能方面的发展确实受到了硬件方面的制约,其他的程序其实都无所谓呢?即使是现在的软件放到以前的电脑上也能运行,不知道是软件发展的太慢,还是兼容性做的太好了呢?

tags: 旧电脑 - Darling - whisper - Anbox

0 comments

Be the first person to leave a comment!


About Joyk


Aggregate valuable and interesting links.
Joyk means Joy of geeK