P夫的NoSSD压缩图参数详解

P夫1.4.0开始集成了NoSSD的P图和挂盘挖矿。作者进行了大量的测试,在流程方面做了很多工作尽可能地提高单位时间产出效率和自动化。

本文最近更新于:2022年11月21日

一、先了解NoSSD的P图程序

NoSSD的P图流程跟传统P图流程完全不同,总共分为了两步,第一步先P出一个spt格式粗压图,第二步将spt进一步压缩成fpt格式的最终图。在P夫里第一步被称为「P图」、第二步称为「压缩」,本文中「P图」有时候也笼统表示广义上的P图+压缩。

P图阶段需要大量CPU和内存,压缩阶段却要求极低。压缩进程只需要1个CPU核心和4GB内存。默认情况P图和压缩是串行状态,将P图和压缩两个阶段分开后同时执行是提高效率的有效办法。P夫里最重要流程优化就是可以随意指定两种并行任务数量。

NoSSD的P图任务和压缩任务看起来像是相同级别,P图任务的食量如果是老虎、那么压缩任务就是土狗,P夫里提到的多开都是指P图任务多开,压缩任务没资格跟P图任务相提并论。

串行任务在后半段系统资源浪费严重
并行方式能保持全程资源高使用率

总结加快P图速度的核心思路

  1. P图和压缩分开进行
  2. 多开P图任务
  3. 每个P图任务至少给搭配3块机械盘,没那么多机械盘用SSD替身来取代
  4. 用SSD替身能将速度最大化

二、NoSSD的关键参数解析

下图是创建NoSSD的任务界面,左侧红框中全部都是针对P图进程(根据模式决定,不一定只P图)任务的参数,右侧红框【额外压缩任务】进程没有那么多自定义参数。

1、压缩等级:压缩程度,建议默认最高等级5。

数值越大压缩程度越大,可存图越多,收益越多,对挂盘机CPU性能要求越来越高,对CPU要求是根据压缩等级和挂图数量两个因素决定的。

2、P图任务工作模式

  • 【只P图】:强烈推荐!该P图任务只产出spt格式粗压图。该模式可选创建一些【额外的压缩任务】用来协同工作,P图任务负责产出spt,额外的压缩任务负责压缩这些spt为fpt。
  • 【只压缩】:创建的任务就是个普通的压缩任务,跟「额外压缩任务」创建的压缩进程功能一样。只将最终目录里现有的spt压缩成fpt,此时P图参数会有对应限制。内存允许范围[2,4]、CPU不允许调整、挂盘数不允许调整。
  • 【P图&压缩】NoSSD默认工作模式,先P出spt粗压图将最终目录装满,再逐个压缩成fpt。

3、P图任务:并发的NoSSD P图任务数量,不包括压缩任务。

4、额外压缩任务:并发P图流程的关键参数,设置后将创建指定数量的独立的压缩进程,这些压缩进程时刻监控P图程序产出的spt,发现后立即进行压缩。

压缩进程监控范围是所有最终目录,如果有替身盘则监控替身盘。

压缩任务数量只要能及时处理掉新P出来的spt图即可。

好在它们监控状态不消耗系统资源,压缩时每个任务需要1个CPU核心和1.6GB~4GB内存(低于1.6GB无法运行)。

你可能会问这些额外的压缩任务跟直接创建「只压缩」模式的P图任务有什么不同?他们功能完全相同。

5、每个P图任务内存强烈建议提前规划好任务数量和每个任务的内存大小,手动指定具体数值,否则极有可能导致某个任务申请不到最低运行内存而报错。

在NoSSD内核中,如果内存足够大P图任务默认会申请123GB内存,P图任务最低内存要求是2.72 GB;压缩任务默认申请4GB内存,压缩进程最低内存要求1.6GB。

6、每个P图任务CPU:P图任务间歇性使用CPU,所以不必均分CPU核心给各个任务,可适当调高。

在NoSSD内核中每个P图任务默认使用一半的CPU核心,每个压缩任务默认使用1个核心。

7、每个P图任务挂盘数这是影响性能的关键参数,一定要给P图任务分配至少3个机械盘,推荐5个。

8、填充辅助目录强烈建议给P图任务设置辅助盘,想把机械盘完美装满就必然要借助外部空间,这就需要提供除了最终目录以外的一个独立磁盘(或目录),这个磁盘至少要有410+GB空间用来生产fpt文件。

但是并不是一定要配置该参数,如果任务最终目录里面有替身盘、有未被P图任务挂上的最终目录、都会被P夫拿来作辅助盘使用,此时不配置【填充辅助目录】也是可以的。

可以用系统盘的某个目录、单独的机械盘、SSD都可以。

NoSSD默认会将机械盘P满spt,保证第一时间形成算力获得收益,这是不错的机制,但是P出最终的fpt图装满机械盘的过程就比较曲折,逐个压缩这些spt为fpt,挤出来空闲空间再重新P图直到把硬盘的装满fpt文件,机械盘大概率会剩余一个spt无法解决(当然有时候磁盘剩一个spt无所谓,即使把它压缩了也无法再多存一个图,P夫填充磁盘时候会根据实际情况决定是否压缩最后一个图)。

9、最终目录:就是存图的机械盘,盘的数量决定了并发任务数量。

假如有8个机械盘(最终目录),【每个P图任务挂盘】设置为5,【P图任务】设置为4,此时因为没有足够的机械盘只会创建2个P图任务。

如果想开3个并发P图任务,每个任务4块盘,总共能挂12块盘,如果有SSD或者其他盘建议也加到最终目录里面,12块盘之后又加了两个SSD在最后,那么最后这两个SSD就会在前面12个盘全部被NoSSD P满时最后填充时充当辅助盘。

【填充】是指NoSSD会剩余一个最大达225G的tmp和1个spt在盘里,P夫在最后会想办法全用fpt装满磁盘,这就需要借助外部磁盘实现。首先会寻找替身盘当辅助盘、其次是P图任务没挂上的机械盘、最后是任务中的某个机械盘。所以最差的情况是P图任务下的N个盘中有N-1个盘完美装满了fpt,还有一块盘会剩下spt。

10、替身SSD:虽然称为SSD,配置一个高速机械盘也是可以的。加上这个功能是因为NoSSD在P图和压缩对SSD的损耗极少(有待更多数据验证)。

它代替机械盘进行P图和压缩,只将最终的fpt文件拷贝到机械盘(是压缩成fpt再拷贝,还是一边压缩一边导出是可配置的)。为体质参差不齐的机械盘提供P图速度保底;并且有了替身盘直接就可将机械盘装满fpt而不必像原生NoSSD那样剩余NoSSDChiaPool.tmp、spt文件之后再由P夫逐个填满。

单个P图任务写入速度大概270+MB/s,压缩任务可能有130+MB/s,可以将一个SSD分配给多个机械盘当替身,建议普通sata接口的SSD不要给超过2个任务做替身,m2或者企业固态请根据SSD读写能力自行决定数量。

一个替身目录极端情况会有三个进程同时读写,1个P进程P图、1个压缩进程压缩、1个剪切图的进程往机械盘拷贝fpt,(剪切图进程和压缩进程在勾选【从替身直接压缩到机械盘】时不会同时存在)。

11、从替身直接压缩到机械盘:建议默认勾选即可。

该功能只对有【替身SSD】的最终目录生效,强烈推荐勾选,替身盘中的spt文件压缩同时导出在机械盘,免去了在替身盘中压缩后再次剪切的步骤,避免浪费时间。

三、NoSSD参数例子

样例1,该例子仅用作参数介绍,不是P图参数建议!!!

主机物理内存512,CPU核心128,19个物理机械盘

4个P图任务需要内存 4 x 90 GB = 360 GB,6个压缩任务需要内存 6 x 4 GB = 24 GB,这要求主机要有至少360 GB + 24 GB=384GB空闲内存。

能开4个P图任务的前提是要有足够多的机械盘,【每个P图任务挂盘】5个,最多需要20个盘,最少需要16个,硬盘<=15只会创建3个P图任务,此例子中每个任务的挂盘数就是:5、5、5、4。

例子2:主机CPU64核心、128GB内存、18块机械盘,想开2个并发P图和4个压缩,如何设置?

例子2的创建任务确认提示:

四、一些已知问题:

  1. NoSSD内核有时候无法申请到【已缓存】状态的系统内存导致任务实际使用的内存远低于系统可用的内存。

发表回复