2012greensystem 发表于 2016-11-27 10:26:33

能够自动降频的CPU,使用了usb --init就有可能会中途死机

商务笔记本,CPU是U9300、U9600这类超低电压系列的,温度高时会自动降频,电池供电时闲置状态是半频。
这类笔记本使用0.4.6a并且在菜单里加入usb --init用于加速解压lz4的RamOS,有可能会在解压的过程中死机。
已经遇到的容易出现死机的情形有两种:1.电池供电。2.交流电供电并且机器内部温度较高。
这两种情形的共同点就是容易触发CPU自动变频。
总之,给人的感觉就是CPU变频与usb --init这条命令会起冲突,导致机器容易死机。
这类U开头的CPU只用于那些特别重视节能的商务笔记本,几乎已经被时代淘汰了。不知道这种问题是否还有希望得到解决?

不点 发表于 2016-11-27 11:23:14

从你的描述,我理解为,那与 grub4dos 无关。

在加载大文件的过程中,由于耗费时间较长,所以出问题的可能性就大,也因此你怀疑是 usb --init 造成的。

而实际上可能与 grub4dos 无关,而与机器本身的硬件(和温度等情况)有关。

另外,假如你能确认,当不使用 usb --init 时总是不出问题,那么,这就可以确定是 grub4dos 的 usb 驱动与硬件的兼容性不那么好(尤其是受温度等环境因素影响时)。

以上是我的理解,或者说 “瞎猜”。

2012greensystem 发表于 2016-11-27 13:54:56

不点 发表于 2016-11-27 11:23
从你的描述,我理解为,那与 grub4dos 无关。

在加载大文件的过程中,由于耗费时间较长,所以出问题的可 ...

我没有技术能力去分析确定,只能从历史数据来确定。
因为每次死机(解压过程中卡住不再动)都是发生在温度太高或是电池供电这两种能够引发CPU变频的情形之下、并且使用了usb --init,数次重启后再解压都同样是死机,如果重启后在菜单选择界面编辑删掉这一行就不会死机了。
而大多数时候都是使用交流电且温度不高(不满足变频条件),无论是否使用usb --init,都没有发生过死机现象。
因此,我只能认为死机故障是由usb --init和CPU变频一起造成的。

2012greensystem 发表于 2016-11-27 13:59:41

同样是使用电池供电的情形下,如果没有使用usb --init,加载大文件耗费时间较长,却不会死机;而使用了usb --init,加载大文件耗费时间较短,却频频死机。

不点 发表于 2016-11-27 14:15:23

2012greensystem 发表于 2016-11-27 13:59
同样是使用电池供电的情形下,如果没有使用usb --init,加载大文件耗费时间较长,却不会死机;而使用了usb...

我感觉你已经彻底说清楚了:是 usb --init 与特定环境共同造成的问题。根据你的描述,我觉得应该归结为 “grub4dos 的 usb 驱动与特定的硬件和特定的环境条件不兼容” 造成的。纯粹的 ROM BIOS 没问题,那是因为硬件厂商专门测试过的,他们对其硬件特性很了解,所以他们的 ROM BIOS 没有出现问题。

pseudo 发表于 2016-11-27 16:05:12

本帖最后由 pseudo 于 2016-11-27 16:07 编辑

可以理解。
用了 usb --init ,读U盘速度变快,数据流量大,CPU解压运算压力大,导致发热、死机。这不好怪 usb --init 、grub4dos。

我猜这样子也容易弄死这台机子:
用7-zip以极限压缩比、7z格式将某些东西打包成1GB以上的压缩包。

2012greensystem 发表于 2016-11-27 17:05:42

不点 发表于 2016-11-27 14:15
我感觉你已经彻底说清楚了:是 usb --init 与特定环境共同造成的问题。根据你的描述,我觉得应该归结为...

我弄错了一点,那并不是死机,而是解压过程出错。
它的表现是解压途中卡住不再动了、也没有读取U盘数据,但是按NumLock、CapeLock都可以开启关闭相应的键盘指示灯,可以按Ctrl+Alt+Del重启电脑。
最新版0.4.6a解压gz或lz4都是这样卡住不动,但是换成旧版0.4.6a-2015-06-17在解压gz时会在途中告知镜像出错并且允许我按任意键返回菜单。
曾经出现过这种情况:RamOS成功渡过解压阶段,但是在进入桌面后不久,会跳出对话框报告系统出错并且在我点击确定后就重启了。
目前只发现在解压时才出现这种问题,而直接读取正常的镜像并没有发现问题,我认为不解压就不会需要CPU变频、也就不会引发问题。

2012greensystem 发表于 2016-11-27 17:07:48

pseudo 发表于 2016-11-27 16:05
可以理解。
用了 usb --init ,读U盘速度变快,数据流量大,CPU解压运算压力大,导致发热、死机。这不好怪 ...

我弄错了一点,那并不是死机,而是解压过程出错。详情见7楼。
可以肯定不是发热造成的,我认为是CPU在解压途中改变主频而造成的。
在使用电池供电时,有可能才刚刚开始解压不久就出错了,我了解这机子,凭它的性能是没有能力在如此短暂的时间里产生巨大热量的。我所用的压缩包只有三百多兆。
当然,如果解压超大的压缩包,持续发热使温度上升到特定值,这类CPU就会自动降频,一旦降频也就必然出现问题。

guies 发表于 2016-11-27 18:06:33

usb --init 遇過很台PC死機了,我現在都以啟動 Windows 10 To Go 為主了。
因為在 USB 1.1、2.0 的啟動速度下,Windows To Go 的啟動速度比 WIM 快很多。
缺點當然是啟動完也不能插拔 U 盤。

求道者 发表于 2016-12-2 09:06:47

2012greensystem 发表于 2016-11-27 17:07
我弄错了一点,那并不是死机,而是解压过程出错。详情见7楼。
可以肯定不是发热造成的,我认为是CPU在解 ...

有办法改善散热或者 强制某个频率运行吗?
或者是单纯的解压出错
我听说是有压缩包大小限制的 压缩包多大啊

2012greensystem 发表于 2016-12-2 14:42:06

求道者 发表于 2016-12-2 09:06
有办法改善散热或者 强制某个频率运行吗?
或者是单纯的解压出错
我听说是有压缩包大小限制的 压缩包多 ...

有办法改善散热,但是这个问题和散热没有必然关系。没听说有办法强制某个频率。
这类U开头的CPU会根据情况变频,如果解压过程中变频就会导致解压出错。目前,为了减少变频的可能性就要使用交流电供电,如果用电池供电就要删掉usb --init
我不知道压缩包大小限制是多少,我的压缩包都不足四百兆。

2011yaya2007777 发表于 2016-12-2 15:07:27

解压过程中失败,u盘指示灯熄灭了吗?

2012greensystem 发表于 2016-12-2 15:47:54

2011yaya2007777 发表于 2016-12-2 15:07
解压过程中失败,u盘指示灯熄灭了吗?

解压过程中失败,U盘指示灯没有熄灭、而是长亮。
当我的U盘在通电状态中时,如果没有读写数据则指示灯长亮,如果有读写数据则指示灯闪烁。

2011yaya2007777 发表于 2016-12-2 21:12:04

使用这个测试一下,看看在解压过程中是否失败。
如果屏幕有提示,是让拔出U盘,再插入U盘,然后按任意键继续。

2012greensystem 发表于 2016-12-3 16:18:25

2011yaya2007777 发表于 2016-12-2 21:12
使用这个测试一下,看看在解压过程中是否失败。
如果屏幕有提示,是让拔出U盘,再插入U盘,然后按任意键继 ...

今天用这个测试,电池供电时出错的机率变小了,不知道是因为版本优化还是因为气温下降。
解压gz时会显示解压进度,如果解压出错,会报告说镜像有错并允许我按任意键返回菜单。
解压lz4却不会显示解压进度,无法看出解压情况,如果解压出错,少数是会报告说镜像有错并允许我按任意键返回菜单,多数是会突然自动重启,而且重启后不认U盘,如果再次手动重启就认U盘了。(或者在自动重启后立刻拔掉U盘再插入也就认得U盘了)
另有一个情况,解压出错后屏幕似乎有提示,但只是显示“FLASH”这一个词而已,没有提示拔插U盘,而且U盘指示灯是亮着的,也不知道是否允许拔U盘。

2011yaya2007777 发表于 2016-12-3 17:04:40

只要U盘不忽闪,拔出U盘,再插入U盘,然后按任意键继续。

2012greensystem 发表于 2016-12-3 18:37:05

2011yaya2007777 发表于 2016-12-3 17:04
只要U盘不忽闪,拔出U盘,再插入U盘,然后按任意键继续。

那个只提示“FLASH”一词并且按任意键继续的情况很难遇到,我刚才试了好多次都没有遇到。
在电池供电时,解压gz的出错率很低,解压lz4的出错率就高了。
解压gz时可以看到解压进度,如果出错,就会突然快速解完,然后报告镜像有错,允许我按任意键,如果这时拔出U盘再插入,U盘指示灯也不再亮了,即使按任意键也只是返回菜单,U盘也不再工作,实在没有多大意义。
解压lz4时没有显示解压进度,如果出错,大多数都是突然自动重启;极少数是提示“File not found”然后允许我按任意键返回菜单。
另外,我怀疑压缩文件如果是不连续存储的那么可能解压出错的机率就非常高,当然即便是连续存储也一样可能会解压出错。

我现在最大的期盼是,希望g4d在解压lz4时也显示解压进度,这样在测试时也容易了解情况。

2011yaya2007777 发表于 2016-12-4 11:33:32

解压gz时可以看到解压进度
贴图上来,看看是怎样的情况。

2012greensystem 发表于 2016-12-4 13:24:10

本帖最后由 2012greensystem 于 2016-12-4 18:31 编辑

2011yaya2007777 发表于 2016-12-4 11:33
贴图上来,看看是怎样的情况。



图片来自虚拟机,最下面一行的就是解压进度。
我的vhd文件大小是1500M,当前解压了24M,于是显示成

新版0.4.6a解压gz文件会显示解压进度,而解压lz4文件却不会显示解压进度。
旧版0.4.6a-2015-06-17则刚好相反,解压lz4文件会显示解压进度,而解压gz文件却不会显示解压进度。

2011yaya2007777 发表于 2016-12-4 16:18:21

我觉得是使用 map --mem 参数才有这个显示内容。与什么方式压缩的无关。

2012greensystem 发表于 2016-12-4 16:23:35

2011yaya2007777 发表于 2016-12-4 16:18
我觉得是使用 map --mem 参数才有这个显示内容。与什么方式压缩的无关。

确实是有关的。无论lz4还是gz,我一直都用map --mem,同一个menu.lst,用不同版本的grldr就有不同的情况。

2011yaya2007777 发表于 2016-12-4 18:01:13

意思是,使用最新版本,用map --mem 参数,解压lz4文件却不会显示解压进度?

pseudo 发表于 2016-12-4 18:19:03

map压缩文件不加--mem不行吧。

2012greensystem 发表于 2016-12-4 18:30:30

本帖最后由 2012greensystem 于 2016-12-4 18:55 编辑

2011yaya2007777 发表于 2016-12-4 18:01
意思是,使用最新版本,用map --mem 参数,解压lz4文件却不会显示解压进度?

是的,使用最新版本(chenall官网上的0.4.6a-2016-11-09以及前天晚上你发在这里的测试版),用map --mem参数,解压lz4文件却不会显示解压进度。
奇怪的是,旧版本例如0.4.6a-2015-06-17与最新版刚好相反,同样是用map --mem参数,解压lz4文件会显示解压进度,而解压gz文件却不会显示解压进度。
menu.lst不变,只更换不同版本的grldr就会有不同的情况,这种事一试便知,不会弄错的。
(之前我在19楼说错了,能显示lz4进度却不显示gz进度的版本是旧版0.4.6a-2015-06-17才对,我已经重新编辑19楼了)

2011yaya2007777 发表于 2016-12-5 09:54:47

看了 一下源代码,只有 lzma 和 pxe 文件类型不显示进度,其余只要往内存读文件,均显示进度。
使用lz4压缩要在grub4dos下使用必须添加--content-size参数。可能是你没有注意。

不点 发表于 2016-12-5 10:54:27

2011yaya2007777 发表于 2016-12-5 09:54
看了 一下源代码,只有 lzma 和 pxe 文件类型不显示进度,其余只要往内存读文件,均显示进度。
使用lz4压 ...

显示进度似乎是个很实用的功能。感觉 lzma 和 pxe 也都应该显示进度。

有人想要有关主板内存布局的数据(就是 displaymem 显示的那些数据)。当然了,用户自己可以通过 displaymem 命令得到这些数据。但如果从方便用户的角度考虑,感觉还是应该以某种方式给出这些数据。比如说,把 displaymem 显示的那些 “用户可用” 内存加起来,放在 API 变量区,让用户可以直接获取它,而不是需要通过 displaymem 再分析(很麻烦)。有人需要 “最大内存块” 的大小,我觉得没必要提供这个数据,因为即使知道了这个,也不一定有用。为什么呢?因为如果先前已经有了 map --mem ,那么它会消耗内存,有可能已经占用了最大内存块。况且,知道了一个最大内存块之后,说不定用户或第三方开发者还想了解 “第二大的内存块”,这就很难满足了,除非把 displaymem 显示的 “用户可用内存块” 全部以数组的形式提供出来,才能满足所有的需求。综上所述,我认为只提供一个 “用户可用内存总量” 就行了(聊胜于无),就差不多够用了(意思是够第三方开发者用了),能粗略、大概知道机器的总内存量,也就行了。目前市面上电脑的内存量普遍超过 4G,用户使用 map 也倾向于加载很大的 IMG,而这,基本上都倾向于使用位于内存地址 4G 以上的内存块,因此基本都是连续内存块(还没听说过有哪个主板把 4G 以上的内存 “碎片化”)。

2012greensystem 发表于 2016-12-5 13:54:11

2011yaya2007777 发表于 2016-12-5 09:54
看了 一下源代码,只有 lzma 和 pxe 文件类型不显示进度,其余只要往内存读文件,均显示进度。
使用lz4压 ...

我对g4d的了解一直都停在刚入门的水平,能找到的教程只有置顶的chm文档,g4d的很多功能我基本都用不到,也就没有去深入了解,很多参数我都不知道需要在什么时候使用,像这个--content-size参数在教程里并没有提到,我根本不知道它和lz4有什么关系。

一般我用RamOS都是按常规来的:
map --mem 文件 (hd0)

同样是压缩成lz4,使用旧版0.4.6a-2015-06-17的grldr,载入内存时会显示进度,但是换成新版的grldr就不会显示进度了。

如果新版本并不是故意屏蔽显示,我期盼将来可以恢复lz4的进度显示。

2011yaya2007777 发表于 2016-12-5 14:51:14

本帖最后由 2011yaya2007777 于 2016-12-5 14:58 编辑

看来还是没有明白。我这里测试,自己压缩成lz4,可以显示进度。给你说得很清楚,没有限制lz4的代码。如果压缩的时候不加参数,压缩文件头没有文件尺寸,所以不显示。
你可能是使用别人压缩的成品。需要解压后,增加参数再压缩。

你说的不同版本情况不一样,是使用同一个lz4文件吗?

2011yaya2007777 发表于 2016-12-5 15:06:54

我认为只提供一个 “用户可用内存总量” 就行了
我觉得这样没有什么实用价值。
除非把 displaymem 显示的 “用户可用内存块” 全部以数组的形式提供出来
这个形式我觉得可取。可由用户程序确定使用内存规则,比如最大块,最高块,最适合块等待。

API 变量区在哪里?

2012greensystem 发表于 2016-12-5 15:14:19

2011yaya2007777 发表于 2016-12-5 14:51
看来还是没有明白。我这里测试,自己压缩成lz4,可以显示进度。给你说得很清楚,没有限制lz4的代码。如果压 ...

我在压缩lz4时用的命令是:lz4 -9 --content-size v.vhd RamOS.lz4
我在压缩gz时用的命令是:gzip -9 v.vhd
所有vhd文件、lz4文件、gz文件都是我亲自弄出来的。

我说的不同版本情况不一样,确实都是使用同一个lz4文件或者同一个gz文件,也用同一个menu.lst,只有grldr这一个文件会有替换。

这种情况不只我一个人遇到,也有人和我情况一样 http://bbs.wuyou.net/forum.php?mod=viewthread&tid=383094
用最新版grldr,开机加载lz4到内存中,没有显示进度。
页: [1] 2 3
查看完整版本: 能够自动降频的CPU,使用了usb --init就有可能会中途死机