无忧启动论坛

标题: 关于PrimoCache的缓存命令设置 [打印本页]

作者: fulibo    时间: 2023-2-4 12:51
标题: 关于PrimoCache的缓存命令设置
rxpcc 操作命令
ls           列出当前所有的逻辑卷、缓存任务和二级存储卷
new 新建一个缓存任务
-v 【指的是分区,c为1,d为2】
-m 【内存大小】
-b 4【4K对齐】
-a skipflush【关机免写 】
-g 【指定缓存策略】
rw 【读数据和写数据】
-w INF【无限延迟】
-s 【跳过询问,在静默模式中执行此命令,不用两次输入YY】


rxpcc dwpause -v 1【暂停延时写入功能并刷入所有缓写数据到分区1】


import 显示存储在配置文件中的缓存配置。


我在玩RAMos的时候发现员外的批处理里面的命令
rxpcc new -v 1 -m 2048 -b 4 -a skipflush -g wo -w INF -s


这个是设置成只缓读硬盘的命令,
我就想能不能设置只缓写呢?


然后查看了命令说明,发现-g wo
然后试了几次,终于弄出来了!


rxpcc new -v 1 -m 2048 -b 4 -a skipflush -g ro -w INF -s


这个是设置1分区2G缓存,只写缓存,4K对齐,然后关机免写!


注意是字母o不是0




作者: nathan6498    时间: 2023-2-4 16:55
收藏了,需要时使用
作者: hmaaaa    时间: 2023-2-4 18:54
Thanks so much!感恩~~! ^^ 有您真好。辛苦了!
作者: hmaaaa    时间: 2023-2-4 18:54
謝謝你的提供與分享 ^^ 感恩喔~~!辛苦了!
作者: 2012yukigz2004    时间: 2023-2-5 09:43
f大,弄个ramos成品玩玩,谢谢老大
作者: fulibo    时间: 2023-2-5 09:55
2012yukigz2004 发表于 2023-2-5 09:43
f大,弄个ramos成品玩玩,谢谢老大

成品的ramos其实就是PE,真的ramos是本机用的!

作者: legou    时间: 2023-2-5 10:54
RAMOS玩过一阵,其实发现这软件只对特别的一些场景有用,大部分的PC使用没用的

比如你说玩吃鸡游戏,一个40多GB的游戏,你这个预读根本不能起任何作用吧,只能说你反复打开一个可以缓存到你的RAMOS空间(大小)的游戏,或者程序,才能加速“程序启动”那一点点时间

另外一个作用,就是对反复读写的程序,可以起到保护硬盘(缓存扇区)的作用

这个项目,其实,跟Intel和AMD的官方人员都曾经沟通过,但是这些大厂的市场/研发认真研究一番后,都觉得这个东西没太大用处

Intel有自己的傲腾内存(工作原理差不多,但是直接与微软合作,做成了固化的内存样子)
AMD在主板上有一个加速器,基本与RAMOS差不多,但是最多使用2G的内存加速
三星的PRO版本SSD,安装了三星的磁盘管理APP后,也有一个类似RAMOS的 RAPID的程序,最大也是用2G内存缓存高速写入的

所以,大家还是降低一点这个软件的期望值,内存有32G以上的,其实根本不用这个软件(绝大部分场景),除非你的机器做服务器共享给很多人读/写硬盘,这样这个软件有用
作者: likeyouli    时间: 2023-2-6 16:00
legou 发表于 2023-2-5 10:54
RAMOS玩过一阵,其实发现这软件只对特别的一些场景有用,大部分的PC使用没用的

比如你说玩吃鸡游戏,一 ...

感谢,学习了,,@fulibo,楼主对此能否认可 ?
作者: 9zhmke    时间: 2024-2-11 23:37
本帖最后由 9zhmke 于 2024-2-12 16:15 编辑

感谢楼主的探索,今天我又重装了系统,再次重装PrimoCache,虽然之前都在用自制的PrimoCache4.3静默安装版,但只是安装软件而已,并没有设置缓存的功能,搜索到本贴,摸索写了个自己用的批处理来静默安装
  1. cd /d "C:\Program Files\PrimoCache"
  2. set disk=没找到盘
  3. for /f "tokens=2" %%i in ('rxpcc ls^|find "Vol"^|find "Level-2"') do set disk=%%i
  4. for /f "tokens=4" %%i in ('rxpcc ls^|find "%disk%"') do set disk=%%i
  5. echo 二级缓存是%disk%--{A340EFBD-5A9F-444A-B642-A42B5A9CD496}

  6. rxpcc new -v d -m 4096 -l %disk% -r 255,3 -w 20 -a average,freewritten,flushsleep,flushtoL2 -p=fromL2 -s
  7. rem D盘,内存4G,二级缓存3%写入,缓存时间20秒,均衡模式,待机刷入缓存,L1满时转L2,-p优先取L2,-s静默
  8. rxpcc new -v c -m 4096 -w INF -a average,freewritten,flushsleep -p=boot -s
  9. rem C盘,内存4G,缓存时间无限,均衡模式,待机刷入缓存,-p启动时开始,优先取L2,-s静默
复制代码

顺便把AI翻译自带的帮助放上来,大家一起进一步摸索(rxpcc ? new)=========================================================

  1. -v, -volume <volume> - 指定一个或多个要由此新缓存任务缓存的卷。
  2. 最多可以指定16个卷。

  3. 示例: -v 2,3,5
  4. -v c,d,5
  5. -t, -import <cfgfile> - 从文件<cfgfile>导入缓存配置。
  6. <cfgfile>指定配置文件的完整路径和名称。
  7. 注意:当指定此选项时,命令中在此选项之前写入的所有缓存选项都将被忽略。
  8. 但是您可以在导入的配置之后继续追加选项以修改导入的配置。
  9. -m, -mm <size> - 指定一级缓存的操作系统管理内存(MM)的大小,以兆字节(MB)为单位。
  10. -i, -im <size> - 指定一级缓存的操作系统不可见内存(IM)的大小,以兆字节(MB)为单位。
  11. -k, -c1adv <options> - 指定高级一级缓存选项。
  12. <options>指定以下一个或多个选项,用逗号分隔:
  13. freehiber - 在混合睡眠或休眠时释放L1缓存
  14. keepoff - 在快速关闭时保留L1缓存(MM)
  15. 注意:选项“keepoff”仅在未指定选项“freehiber”且需要Windows 8或更高版本时有效。
  16. 示例:-k freehiber
  17. -l, -l2 <storage>[,<size>] - 指定二级存储和二级缓存大小。
  18. <storage>指定一个二级存储的标识符。
  19. <size>指定二级缓存的大小,以兆字节(MB)为单位。
  20. <size>是可选的,如果未指定,将为二级缓存申请所有可用的二级存储空间。
  21. -e, -wspeed <speed> - 指定Windows繁忙时将缓存数据定期收集到二级存储的重复间隔,以秒为单位。<speed>的取值范围为0到250。
  22. 仅当指定了-l选项时才有效。
  23. 如果未指定-e选项,或者<speed>为0,则程序使用其内部设置。
  24. 如果希望仅在系统处于空闲状态时收集二级缓存数据,请使用“-e IDLE”。
  25. 如果希望即时收集二级缓存数据,请使用“-e INSTANT”。
  26. -j, -c2adv <options> - 指定高级二级缓存选项。
  27. <options>指定以下一个或多个选项,用逗号分隔:
  28. volatile - 当系统重新启动时,二级存储中的缓存内容不会被保留。
  29. 该选项通常用于多启动计算机,另一个操作系统可能会修改缓存的卷。
  30. ignoresync - 即使缓存内容与源数据可能不同步,也不会重置二级存储中的缓存内容。
  31. noverify - 当检测到不正常关机时,二级缓存将不尝试验证缓存内容,而只会清除所有缓存内容。
  32. 注意:“volatile”,“ignoresync”和“noverify”是互斥的。如果同时设置了多个选项,
  33. 优先级如下:
  34. volatile > ignoresync > noverify
  35. 警告:“ignoresync”选项可能为读/写请求提供过时或错误的缓存数据,并可能导致意外错误和破坏目标卷!
  36. 请勿在正常情况下启用此选项!
  37. 示例:-j volatile
  38. -r, -ratio <r1>[,<r2>] - 指定缓存空间的多少比例用于写入缓存。
  39. <r1>是一级缓存的比例值,<r2>是二级缓存的比例值。
  40. 可能的值为0到100的数字,或255表示整个缓存空间由读和写共享。
  41. 一级缓存的默认值为255(共享),二级缓存的默认值为0(只读)。
  42. 示例:-r 80,60表示80%的L1缓存用于写入,20%用于读取,
  43. 同时60%的L2缓存用于写入,40%用于读取。
  44. -b, -block <blocksize> - 指定块大小。 <blocksize>可以是以下值之一:
  45. 4、8、16、32、64、128、256、512。
  46. 如果未指定-b选项,命令将自动选择合适的块大小。
  47. -w, -dw <latency> - 启用延迟写入。 <latency>指定缓存任务从缓存定期刷新延迟写入数据到磁盘的时间间隔,以秒为单位。
  48. 如果要为延迟设置无限值,请使用“-w INF”。
  49. -a, -dwadv <options> - 指定高级延迟写入选项。仅当指定-w选项时才有效。
  50. <options>指定以下一个或多个选项,用逗号分隔:
  51. native - 写入模式:NATIVE
  52. intelligent - 写入模式:INTELLIGENT
  53. idle - 写入模式:IDLE-FLUSH
  54. buffer - 写入模式:BUFFER
  55. average - 写入模式:AVERAGE
  56. ignorebusy - 忽略Windows繁忙状态
  57. freewritten - 在写入时释放块
  58. flushsleep - 在睡眠时刷新
  59. flushtoL2 - 刷新L1缓存到L2缓存
  60. skipflush - 在关闭时跳过刷新(警告:此选项可能完全破坏整个磁盘分区!)
  61. 示例:-a intelligent,freewritten,flushsleep
  62. -p, -prefetch [=<options>] - 启用预取。[options]指定以下一个或多个选项,用逗号分隔:
  63. boot - 在Windows启动时开始
  64. lock - 锁定缓存内容
  65. fromL2 - 从二级缓存中读取
  66. 示例1:-p
  67. 示例2:-p=boot,fromL2
  68. -x,-voladv <spec> - 默认情况下,缓存任务中的所有卷都会遵循任务的缓存设置。此选项可以指定每个卷的个别设置,并关闭一些不需要的功能。 <spec>指定一个卷及其设置。它具有以下格式,其中“v”表示卷索引,每个“x”表示一个设置值,为十进制数。 v-xxxxx “x”代表的设置从左到右依次为策略(Strategy)、二级缓存(L2 Cache)、延迟写入(Defer-Write)、预取(Prefetch)和一级缓存(L1 Cache)。以下表列出了它们的可能值。 策略(Strategy): 0 默认 2 只读 3 只写 一级缓存(L1 Cache)/二级缓存(L2 Cache)/延迟写入(Defer-Write)/预取(Prefetch): 0 默认 2 禁用 (默认 - 遵循缓存任务的设置) 例如,“-x 4-32200”指定了卷 #4 的个别设置,策略(Strategy)为只写(Write-Only),禁用二级缓存(L2 Cache),禁用延迟写入(Defer-Write),而预取(Prefetch)和一级缓存(L1 Cache)未指定,
  69. 使用缓存任务的设置。在“xxxxx”格式中,尾随的零可以忽略。因此,上述示例等同于“-x 4-322”。两个或多个<spec>之间用逗号分隔。例如,“-x 4-3220,1-02222”为卷 #4 和 #1 设置了设置。 -s,-silent - 以静默模式执行此命令。没有交互提示和运行信息。仍然显示错误或警告信息。


  70. 示例:

  71. 以下命令为卷 #1(C:)和 #3(E:)创建一个缓存任务,指定1024MB RAM、20480MB 二级缓存以及8KB 块大小:
  72. rxpcc new -v c,e -m 1024 -l {13D8F992-8F9C-4000-A5F3-6A6AD2872E81},20480 -b 8

  73. 以下命令为卷 #2 创建一个缓存任务,指定4096MB RAM、4KB 块大小、10 秒延迟写入延迟和100 的写入缓存:
  74. rxpcc new -m 4096 -b 4 -w 10 -r 100 -v 2

  75. 以下命令通过导入文件“c:\configuration.cfg”中存储的配置,并指定与配置文件不同的4096MB RAM 缓存,为卷 #2 创建一个缓存任务:
  76. rxpcc new -v 2 -t "c:\configuration.cfg" -m 4096
复制代码

现在打算写一个可用于所我周边朋友电脑环境的批处理,目前写了个初稿还没有仔细调试,有兴趣味的同学一起搞搞:

  1. @echo Off
  2. rem 要多测试,比如卷标为空时,取分区空间位置是否正确等
  3. pushd %~DP0
  4. setlocal enabledelayedexpansion
  5. set debug=0
  6. set "MB= "
  7. set GB=000
  8. set TB=000000

  9. echo 查几只硬盘、是否SSD+机械盘、内存大小
  10. set SSD_NUM=0
  11. for /f %%i in ('powershell Get-PhysicalDisk^|find "SSD"') do set SSD=%%i && set /a SSD_NUM=!SSD_NUM! + 1
  12. set HDD_NUM=0
  13. for /f %%i in ('powershell Get-PhysicalDisk^|find "HDD"') do set HDD=%%i && set /a HDD_NUM=!HDD_NUM! + 1
  14. wmic os get TotalVisibleMemorySize
  15. if %SSD_NUM% gtr 1 set msg1=固态硬盘大于一只,程序无法正确判断应该怎么设缓存.
  16. if %HDD_NUM% gtr 1 set msg2=机械硬盘大于一只,程序无法正确判断应该怎么设缓存.
  17. for /f "tokens=2*" %%i in ('systeminfo^|find "物理内存总量"') do set memory=%%i %%j
  18. if not "%memory:~-2%"=="MB" set msg3=内存大小超出认知,程序无法正确判断应该怎么设缓存.
  19. rem 去除最后两位,去除中间的逗号
  20. set memory=%memory:~0,-2%
  21. set /a memory=%memory:,=% /1000
  22. if %memory% lss 8 set msg3=内存太小,还是不使用缓存程序好些.
  23. if "%msg1%%msg2%%msg3%" gtr "" goto ERROR
  24. echo 固态%SSD_NUM%只,排位%SSD%;机械%HDD_NUM%只,排位%HDD%,内存大小:%memory%
  25. rem =======================================================================================================
  26. echo 查看系统磁盘环境
  27. set hd=MBR
  28. for /f "tokens=2,8" %%i in ('echo list disk ^|diskpart') do (
  29.         set disks=%%i
  30.         if "%%j"=="*" set hd=GPT
  31.         )
  32. set /a disks=%disks% + 1
  33. if %debug%==1 echo 磁盘引导方式是:%hd%,共有%disks%只磁盘
  34. set boot=没找到
  35. set system=没找到
  36. for /f "tokens=2,3,6,7,8" %%i in ('echo list vol ^|diskpart^|find "启动"') do (
  37.         set disk_c=%%i
  38.         set system=%%j
  39.         if "%%l"=="TB" set c_size_0=000000
  40.         if "%%l"=="GB" set c_size_0=000
  41.         if "%%l"=="MB" set c_size_0=
  42.         set c_size=%%k%c_size_0%
  43.         if "%%m"=="TB" set c_size_0=000000
  44.         if "%%m"=="GB" set c_size_0=000
  45.         if "%%m"=="MB" set c_size_0=
  46.         if "%%k"=="磁盘分区" set c_size=%%l%c_size_0%
  47.         )
  48. for /f "tokens=2" %%i in ('echo list vol ^|diskpart^|find "系统"') do set boot=%%i
  49. if %debug%==1 echo 启动分区号是%boot%,系统安装到了第%disk_c%个分区,即%system%盘,大小是%c_size%兆
  50. for /f "tokens=2" %%i in ('echo list vol^|diskpart^|find "磁盘分区"') do set vols=%%i
  51. set /a vols=%vols% + 1
  52. if %debug%==1 echo 硬盘共有%vols%个分区
  53. set disk_u=没找到
  54. for /f "tokens=3" %%i in ('echo list vol^|diskpart^|find "可移动"') do set disk_u=%%i& goto U_NEXT
  55. :U_NEXT
  56. if %debug%==1 echo 第一个U盘:%disk_u%
  57. set udisks=0
  58. for /f "tokens=3" %%i in ('echo list vol^|diskpart^|find "可移动"') do set /a udisks=!udisks! + 1
  59. if %debug%==1 echo 共有%udisks%个U盘
  60. echo 共有%disks%只磁盘,共有%udisks%个U盘,第一只U盘:%disk_u%。硬盘共有%vols%个分区,磁盘引导方式是:%hd%,
  61. echo 启动分区号是%boot%,系统安装到了第%disk_c%个分区,即%system%盘,大小是%c_size%兆
  62. rem =======================================================================================================
  63. echo 是否SSD有空余未分区空间
  64. set SSD=1
  65. (        echo.select disk %SSD%
  66.         echo.list partition
  67. )|diskpart|find "分区   ">%tmp%\diskpart.txt
  68. set all=0
  69. set num=0
  70. for /f "tokens=2,4,5" %%i in (%tmp%\diskpart.txt) do (
  71.         set size=%%j!%%k!
  72.         set /a all=!all! + !size!
  73.         set part%%i=!size!
  74.         set /a num=!num! + 1
  75.         echo 分区!num!单位是%%k,size=!size!M,all=!all!
  76.         )
  77. set /a all=%all% / 1000
  78. for /f "tokens=4,5" %%i in ('echo list disk^|diskpart^|find "磁盘 %SSD%"') do set /a size=%%i!%%j! /1000
  79. if not "%all%"=="%size%" set msg=空间未分完
  80. if     "%all%"=="%size%" set msg=已分配完
  81. del %tmp%\diskpart.txt
  82. echo 硬盘%SSD%是%size%G大小,!num!个分区共用了%all%G,%msg%
  83. if "%msg%"=="已分配完" goto PrimoCache
  84. rem =======================================================================================================
  85. echo 把SSD剩余空间分配给二级缓存
  86. set /a SSD_Free=%size% - %all%
  87. if %SSD_Free% lss 5 set msg1=SSD余空太小,放弃建二级缓存
  88. if exist "L:\." set msg2=建立SSD新分区时,驱动器号L被占用无法继续分配.& goto ERROR
  89. (        echo.select disk %SSD%
  90.         echo.create partition primary
  91.         echo.assign letter=L
  92.         echo.list partition
  93. )|diskpart|find "分区   ">%tmp%\diskpart.txt
  94. set all=0
  95. set num_new=0
  96. for /f "tokens=2,4,5" %%i in (%tmp%\diskpart.txt) do (
  97.         set size=%%j!%%k!
  98.         set /a all=!all! + !size!
  99.         set part%%i=!size!
  100.         set /a num_new=!num_new! + 1
  101.         if "%SSD_Free%"=="!size!" set SSD_NEW_Free=%%j%%k&&set SSD_NEW_GB=!size!
  102.         echo 分区!num_new!单位是%%k,size=!size!M,all=!all!
  103.         )
  104. set /a all=%all% / 1000
  105. del %tmp%\diskpart.txt
  106. set /a SSD_NEW_PART = %num_new% - %num%
  107. if not "%SSD_NEW_PART%"=="1" set msg1=建立SSD新分区出错,请检查.& goto ERROR
  108. if %SSD_NEW_GB% gtr 300 set msg2=建立SSD新分区有点大
  109. if %SSD_NEW_GB% lss 3   set msg2=建立SSD新分区有点小
  110. echo 新建的分区号是%num_new%,大小是%SSD_NEW_GB%GB,即将转换为二级缓存
  111. set SSD_NEW_VOL=
  112. for /f "tokens=2,3,7" %%i in ('echo list vol^|diskpart^|find "RAW"') do (
  113.         rem 格式为RAW并且驱动器号是L,大小又相同,肯定就没错了。
  114.         if %%j==L if "%%k"=="%SSD_NEW_GB% GB" set SSD_NEW_VOL=%%i
  115.         )
  116. rxpcc storage format -v %SSD_NEW_VOL% -s
  117. rem =======================================================================================================
  118. :PrimoCache
  119. set disk=没找到盘
  120. for /f "tokens=2" %%i in ('rxpcc ls^|find "Vol"^|find "Level-2"') do set disk=%%i
  121. for /f "tokens=4" %%i in ('rxpcc ls^|find "%disk%"') do set disk=%%i
  122. set Primo=-a average,freewritten,flushsleep
  123. rem 均衡模式,待机刷入缓存;后面一句:二级缓存3%写入,L1满时转L2,-p优先取L2
  124. if not "%disk%"=="没找到盘" set Primo=-l %disk% -r 255,3 -a average,freewritten,flushsleep,flushtoL2 -p=fromL2
  125. echo 二级缓存是%disk%比如{A340EFBD-5A9F-444A-B642-A42B5A9CD496},参数-l %disk% -r 255,3设二级缓存3%写入
  126. rxpcc new -v d -m 4096 -w 20 -s %Primo%
  127. rem D盘,内存4G,缓存时间20秒,,-s静默
  128. :PrimoDisk_D
  129. rxpcc new -v c -m 4096 -w INF -a average,freewritten,flushsleep -p=boot -s
  130. rem C盘,内存4G,缓存时间无限,均衡模式,待机刷入缓存,-p启动时开始,优先取L2,-s静默
  131. rem =======================================================================================================
  132. :ERROR
  133. :END
  134. echo.%msg1%%msg2%%msg3%
  135. pause
复制代码





作者: denslin    时间: 2024-2-23 12:28
感谢分享。。。。。
作者: hehuiying    时间: 2024-4-12 22:47
谢谢分享
作者: 无犹启动    时间: 2024-4-24 13:30
谢谢分享
作者: 航天飞机    时间: 2024-7-9 23:14
好棒!收藏!




欢迎光临 无忧启动论坛 (http://bbs.wuyou.net/) Powered by Discuz! X3.3