最常用的挖矿程序是cgminer,由于我们要用amd显卡挖矿,那么amd的驱动及amd app sdk是必不可少的。很多人希望cgminer 24/7小时运行,做成一个服务更好。在linux下能否实现尚不清楚,但在win下,由于amd的驱动只有登录桌面之后才会加载,所以企图通过各种工具把它加载为一个后台服务就几乎成了不可能完成的任务。现在的问题是,我们显示器接在哪里?amd独显还是i3集显上?
CGminer特有的功能就是监控gpu的工作状态,如温度和风扇转速等,这在即将到来的夏天是非常重要的。bfgminer有类似的功能,但从论坛的争吵来看这两个东西其实同出一源。如果将显示器信号线接到amd独显上,那么在cgminer全速运行时,在桌面进行操作会非常的卡,好处呢就是能正常显示温度和风扇转速监控状态。因为此时的ADL设备列表与open cl备列表一致,cgminer能正确通过ADL 函数获取监控信息。若将显示器信号线接至iGPU的集显输出口上。启动cgminer时,你会发现桌面操作顺畅无比,因为cgminer并不使用这块集显工作,而比特币的算法对cpu及内存的需求都几乎可以忽略不计。但在cgminer启动时你会看到一些警告:adl设备小于open cl设备数量,gpu监控无法用等。然后cgminer仍可以正常工作,但是。。。少了你需要看到的gpu监控信息。这个问题至今无解,看了N久论坛也没有解决之道。原因是AMD的ADL设备与open cl设备定义无任何关联,ADL设备只可识别出amd显卡,但open cl设备有amd和iGPU两个,目前仍不完善的api无法将其设备号正确关联起来。
好吧其实我并不一定要在这台机子上工作,我用远程桌面也行,cgminer除了霸占amd独显外对cpu和内存等不感兴趣,而众所周知远程桌面与显卡也无太大关系,它并不从显存中读取图像。那么问题是。。。我所用的win7 64 位版是不支持多用户远程登录的,那要server版操作系统才行。如果我在另一台机子上远程登录本机,即使用另一用户,仍会提示将中断本机上当前登录的用户进程。那就是说,本机正在挖矿的用户将被log out。那么我在远程桌面 里启动挖矿呢?也可以,cgminer能识别到系统所有的ADL显示设备,但与将显示器线插到iGPU上的情况一致,此时无法获得GPU监控信息。
首先不会选用远程控制类软件,如radmin,tv,logmein等,因为避免不了桌面的卡顿,而且我不想让人在本机上看到我在做什么。还是要通过远程桌面。我的win7是sp1,build 7601。幸运的是网上有这个版本远程桌面完整破解的工具下载,其实就是用破解的termsrv.dll替换了原来的。完成之后,用户A在本机桌面上运行cgminer,用户B用远程桌面连至本机继续工作,做些其它事情。
那么我现在远程桌面上,我仍然看不到用户A桌面上cgminer进程的设备监控结果,我找到了cgwatcher这个程序,按道理在cgminer加上适当参数启动api侦听。然后cgwatcher 将可以连接该4028端口加以监控,但cgwatcheer的开发显然走上了歪路,它更在意的是监控本机上的cgminer的运行状态,如sick,dead,进程死掉等并重启cgminer,这使得cgminer并不是一个正常的socket程序。最后我还是用个远程控制程序,如teamviewer等,连到A用户桌面上来观察下显卡是否正常。
在A用户桌面上,cgwatcher也有它的用处,它可以设置启动时最小化,自动启动miner,最小化miner窗口,甚至隐藏miner窗口等。而其面板上可以显示各种信息包括gpu监控。所以我打算把它放在 win7的启动菜单里自动运行,然而要小心了,如果用户用远程桌面登录,也会自动运行,这将会造成一些问题。如果本机桌面上未运行过,而在远程登录自动启动时会造成不显示监控状态,如果已经运行过则重复运行会造成miner运行中断或异常。所以我在cgwatcher目录下写简单脚本:
if %SESSIONNAME%==Console start ccgwatcher.exe。
将此脚本的快捷方式加入启动菜单项即可。%SESSONNAME%用来判断是否在本机桌面上。而start命令用于取消启动cgwatcher时出现的黑窗口(异步调用)。这样在远程桌面上登录A用户时就不会挖矿。
原创文章,作者:苏葳,如需转载,请注明出处:https://www.swmemo.com/470.html