每当 android 中的熵池减少时,我们可以很容易地观察到设备的迟缓,但我在 linux (ubuntu) 上看不到类似的行为。我在两者中都使用 2GB 内存。为什么熵池对设备的性能有如此大的影响?我们如何确保熵池总是很高?
您可以通过执行以下命令来验证这一点
$adb shell cat /proc/sys/kernel/random/entropy_avail
好吧,从大量阅读和帮助中,我得到了以下有用的信息
首先除了来自
http://hackaday.com/2013/01/04/is-entropy-slowing-down-your-android-device/
当应用程序向在设备最低级别运行的 Linux 内核请求一个随机数时。Android 设置为对所有随机数请求使用 /dev/random,但 [Lambgx02] 表示该位置的可用数字池非常浅。当它们用完时,内核必须重新加载新的种子,这会阻止请求数据的应用程序继续。
他的解决方案是编写自己的应用程序,使用 /dev/urandom 中的数字每秒播种一次 /dev/random。他提到这可能会导致安全漏洞,因为以这种方式播种随机数据并不那么随机。电池寿命也可能存在问题,因此如果您试一试,请务必监控性能。
然后查看以下谷歌问题
https://code.google.com/p/android/issues/detail?id=42265
我了解到,正如 google 工程师所说,Gingerbread 中确实存在问题,但后来解决了。而 android Random 和 SecureRandom 使用 /dev/urandom