ลองศึกษาการขุดเหมืองเงินคริปโตด้วยการ์ดจอ Nvidia
ปัญหาคือทดลองในเซิร์ฟเวอร์ที่ไม่ได้ต่อจอภาพไว้ และไม่ได้ลง Xserver ไว้ การใช้งานผ่าน ssh จึงปรับแต่งอะไรไม่ได้เลย การใช้ค่าที่ติดตั้งมาจากโรงงาน ทำให้การ์ดร้อนจัดจนใช้งานจริงไม่ได้
ปัญหาต่อมาคือไดรเวอร์บนลินุกซ์ล้าสมัยเล็กน้อย ใช้กับการ์ดจอใหม่ ๆ ไม่ค่อยได้ หรือใช้ได้แต่ไม่ดีพอ
(ระบบปฏิบัติการที่ใช้ คือ debian stretch)
ทางแก้คือ
ทำที่เครื่องเซิร์ฟเวอร์ที่ติดตั้งการ์ด Nvidia ไว้
ก่อนอื่น ถือว่าเราได้ลงไดรเวอร์ของ Nvidia มาแล้ว ด้วยคำสั่งดังนี้
$ sudo apt install nvidia-driver nvidia-smi nvidia-settings nvidia-xconfig
ต้องลง Xorg และเพื่อให้สะดวกในการเริ่มต้นและออกจาก X จึงติดตั้ง desktop manager ตัวเล็กไว้ด้วย คือ lightdm
$ sudo apt install lightdm
แก้ไข xorg.conf ให้สามารถใช้งานการปรับแต่งการ์ดจอได้ แล้วก็เริ่ม Xserver ใหม่ด้วยคำสั่ง
$ sudo nvidia-xconfig -a --cool-bits=31 --allow-empty-initial-configuration $ sudo systemctl restart lightdm
ทำที่เครื่องลูก ที่ใช้งาน ssh
ssh เข้าไปที่เซิร์ฟเวอร์ ทำการ merge ค่า $DISPLAY หลักของ X ซึ่งก็คือของการ์ดจอ เข้ากับค่า $DISPLAY ของเราที่มาจาก ssh แล้วก็เรียกใช้ nvidia-settings ผ่านค่าดิสเพลย์หลัก
$ ssh -X root@SERVER
# xauth merge /var/run/lightdm/root/\:0 # nvidia-settings -c :0
จะสามารถใช้งานการปรับแต่งได้ตามต้องการ โดยตรวจดูค่าที่ปรับแต่งแล้ว ด้วยคำสั่ง nvidia-smi
ที่มา
ติดตั้งแพ็คเกจที่ใช้งาน
$ sudo apt install subversion svn-buildpackage $ sudo apt build-dep nvidia-driver
ดาวน์โหลดรุ่นใหม่จาก svn และคอมไพล์
*** อย่าลืมแก้ค่าในตัวแปร $TARGET
ให้เป็นไดเรคทอรี่ที่เราต้องการ ***
$ TARGET=nvidia-graphics-drivers; mkdir $TARGET; cd $TARGET $ svn co svn://anonscm.debian.org/pkg-nvidia/packages/nvidia-graphics-drivers/branches/384 $ cd 384 $ debian/rules get-orig-source $ mkdir ../tarballs $ mv nvidia-graphics-drivers* ../tarballs $ svn-buildpackage --svn-ignore -us -uc -rfakeroot
จะได้ไฟล์แพ็คเกจนามสกุล .deb มาอยู่ในไดเรคทอรี่ ../build-area
ต่อไปก็สร้าง local repository จากไดเรคทอรี่ดังกล่าว ทำการแก้ไข apt/source ลบไดรเวอร์เก่า (ถ้ามี) แล้วก็ติดตั้งของใหม่
$ cd ../build-area $ dpkg-scanpackages . /dev/null > Packages $ sudo vi /etc/apt/sources.list.d/nvidia-384.list
deb [ trusted=yes ] file:$TARGET/nvidia-graphics-drivers/build-area ./
$ sudo systemctl stop lightdm $ sudo apt-get remove ^nvidia ^libnvidia $ sudo apt update $ sudo apt install nvidia-driver nvidia-smi nvidia-settings nvidia-xconfig
บูตเครื่องใหม่ ก็จะสามารถใช้งานไดรเวอร์รุ่นใหม่ได้แล้ว
ที่มา
จบ
ภาคต่อของการขุดเหมืองโดยใช้การ์ดจอ Nvidia
จากครั้งก่อน การตั้งค่าของการ์ด ต้องตั้งค่าใหม่ทุกครั้งเมื่อบูตใหม่ (จริง ๆ สามารถบันทึกค่าเดิมไว้ แล้วนำมาใช้ใหม่ได้ แต่ไม่สะดวกสำหรับงาน console)
คราวนี้จะทำให้มีความเป็นอัตโนมัติมากขึ้น โดยไม่ต้องมาตั้งผ่าน Display Manager (lightdm) ดังนั้นจึงไม่ต้องลง lightdm แบบครั้งก่อนแล้ว
เราจะใช้โปรแกรมและไฟล์ EDID ของคุณ ฺBoris Dimitrov ในการจำลองจอเสมือน และปรับความเร็วพัดลมให้แปรผันตามอุณหภูมิ แต่เนื่องจากดูเหมือนโปรแกรมเดิมใช้งานได้แค่การ์ดใบเดียว และต้องลง tcsh ซึ่งไม่ใช่เชลล์ปริยายของเดเบียน เราจึงเอาของเดิมมาปรับปรุงเล็กน้อยดังนี้
เนื่องจากเป้าหมายคือความเป็นอัตโนมัติมากขึ้น จึงขอใช้งานด้วยสิทธิ์ root ตั้งแต่ต้น เพื่อให้สะดวกในการปรับแต่ง ดังนั้นจึงต้องระวังในการทำงานหน่อย
เริ่มด้วย ถ้าเดิมลง lightdm ไว้แล้ว ให้ถอดออกก่อน
# apt purge lightdm
ถ้าเดิมยังไม่ได้ลงไดรเวอร์ ก็ลงก่อน
# apt install nvidia-driver nvidia-smi nvidia-settings
ลงของจำเป็นก่อน และดาวน์โหลดโปรแกรมมาใช้
# apt install awk git # mkdir -p /PATH/TO/SOURCE/ # cd /PATH/TO/SOURCE # git clone https://github.com/widhaya3/set_gpu_fans_public.git # cd set_gpu_fans_public
เราอาจสั่งรันตรง ๆ ได้จากในนี้เลย หรืออาจนำไปติดตั้งในไดเรคทอรี่ /opt/set_gpu_fans
ตามตัวอย่าง README.md ก็ได้
แต่เพื่อให้คล้ายกับต้นฉบับ เราจะสร้างลิงก์ไปที่ /opt
แล้วสั่งรันจากที่นั่น และเผื่อต้นฉบับมีการปรับปรุง เราก็สามารถสั่ง git pull เพื่ออัปเดตโปรแกรมล่าสุดได้เลย
# mkdir -p /opt # cd /opt # ln -sf /PATH/TO/SOURCE/set_gpu_fans_public set_gpu_fans # /opt/set_gpu_fans/cool_gpu
เสร็จแล้ว
หลังรันครั้งแรก โปรแกรมจะสร้างไฟล์คอนฟิกไว้ที่ /etc/set_gpu_fans_nv/
และไฟล์ปูม (log) ไว้ที่ /var/log/set_gpu_fans_nv-X
มีรายละเอียดคือ
/etc/set_gpu_fans_nv/nvscmd_exmod_once-0.cfg
ไฟล์นี้จะถูกสั่งรันแค่ครั้งเดียวตอนเริ่มรัน/etc/set_gpu_fans_nv/nvscmd_exmod_loop-0.cfg
ถูกรันทุกครั้งที่มีการเปลี่ยนความเร็วพัดลม/var/log/set_gpu_fans_nv-0
บันทึกปูมของการ์ดใบแรกถ้ามีการ์ดหลายใบ เลขลงท้ายจะเพิ่มไปเป็น -1,-2,-3 ไปเรื่อย
เราจะดูผลงานและปรับแต่งภายหลังได้จากคำสั่ง nvidia-smi
ถ้าปรับแต่งจนใช้งานได้ดีแล้ว ก็เอาคำสั่งไปใส่ไว้ในไฟล์ /etc/rc.local
เพื่อให้เริ่มงานตอนเปิดเครื่องได้เลย