技术解析

大家还会考虑 32 位系统吗?
0
2021-07-14 07:55:20
idczone
貌似现在大部分都已经是64位系统,CentOS7都不再发布32位版本。这种情况下,大家安装新系统或者发布新软件时,是否只用考虑64位?我个人感觉只有一些遗留系统还是32位的。
OpenStack Juno版支持CentOS 7,然而CentOS 7只有64版本。將來還有更多系統和軟件只支持64位

为什么还要装32位?

以前是硬件淘汰系统,现在是游戏淘汰系统,例如看门狗等游戏只支持64位,但是我觉得32位还会使用相当长的时间,有些行业软件没有支持64位,就像银行的ATM大多还是XP

虚拟机里 少于4G内存还是会考虑32位
尤其是512内存之类的,跑64位简直是受虐

虚拟机、下载机或者出于需要低耗考虑的情况,依然32位是首选



上游企业有个万年不更新的JAVA客户端,只能在32位系统的SSL VPN下工作,64位操作系统无法连接VPN。

我有个近10年的T43,32位的,前两天想装个PCBSD上去,一看人家已经只出64位版本了,得,继续用FreeBSD,顺便骂娘。

此xp和不是彼xp吧……
ATM用的不是XP embedded么,XP embedded还没停止服务的,嵌入式没法更新的啦

PCBSD不是省油的灯,不是想在x86上用ZFS,或者内存不多的话,不需要考虑这货。

看门狗要求6G RAM,32位桌面端Windows又没有官方PAE支持,铁定是玩不了啦。。
BF的PC版,32位不能调特效。RAM局限是一个很大的问题。

在虚拟机里面安装系统的时候,都是考虑32位系统的

工行的老机器都升级WIN7了

64位系统内存开销要1.5倍与32位系统,4G内存用64位系统就是找虐。
你可以自己测试下,重点是先关闭虚拟内存。然后用64位玩魔兽世界,切换出来开2个WOWDB的查询页面,内存用尽溢出就崩溃了。32位的系统占用才2G左右

对linux系统而言,内存占用没有1.5倍这么大。试过32位Debian的VPS和64位的VPS,内存相差不大,当然64位的系统稍微要多一些。我觉得512M以上内存的VPS,64位和32位的内存差异基本不太需要考虑。

2g vps上现在有意识的用32位的

ARM?

内存占用单字节变双字节,双字节变四字节,以此类推,内存占用必然增多。就是达不到一倍,也少不哪去。
64位系统不是速度快了,而是扩大了基本单元以达到大内存使用的目的。
如果4G以内的内存,32位系统才是最理想的选择。
那些4G的win7x64都怎么想的?

会快,寄存器多了。
4G 装 x86-64 时一般使用绝对足够,到时内存不够时再加个内存就行了。
装 x86 位系统,到时候需要 x86-64 时再重装系统?
而且 x86 windows 最多才能 3.2G 内存。。。

树莓派还得32位系统

单字节变双字节是什么鬼?只有指针会从32位变成64位,数据又不会变。
而且64位系统是寻址空间变大了,怎么会是扩大基本单元?你以为是4K硬盘搞基格式化啊……

128M 内存的 VPS 应该装 64 位系统吗

Linux下long在64位系统是64位的
Windows下Long不管在哪都是32位的

现在手里已经找不到32位的安装盘了

虚拟机

不做开发的话,4G内存win7 x64其实还是够用的,不过win7 x86 + 600M ramdisk 也是爽的飞起,不过内存这种东西越大越爽,谁用谁知道,反正我是不会下载32位的镜像了。。。
chrome一定跟内存厂商有勾结

你编译的是32位程序吧

lz,操作系统有好多情境了,大的就有桌面、服务器、嵌入式三种情境啊。
桌面领域又可以分个人桌面和公司给配的生产环境了吧,个人桌面是自己能够控制的,这才有“考虑”这一说啊。公司给配的自己是没法控制的,我想用64位公司还可能不给呢。
而现在玩树莓派、openwrt的人越来越多,嵌入式也不能忽略了啊。嵌入式基本是有啥用啥吧,而且嵌入式设备的性能能不能跑64位系统也是个事儿。也没法“考虑”啊。
服务器也有性能问题,自己一个vps好歹自己能控制,不过要是384M内存跑64位的话是找虐。而有些重要服务器哪怕自己是运维,要考虑的也是很多的。


Windows下的64位程序 Long就是32位的

没玩过魔兽世界吧?你用win7 32,win7 64试试。看内存是不是一倍的关系!

应为魔兽世界占内存大,所以用魔兽世界一下子就测试出来了

首先吧,山口山本来就没有可比性。
山口山内部各种插件系统,lua虚拟机什么的各种,3D渲染什么的各种,而且内部的内存管理也是黑箱。
万一人家只是因为64位所以就多吃掉点内存来提升运行性能呢?
而且现在战网启动山口山默认就是64位了,你觉得暴雨是吃饱了撑的在同等条件下要多吃你点内存玩么。
常用软件不至于会产生那么大的内存占用差别。
这个long的大小是跟着系统/编译器走的。int一般是32位,long long一般是64位,而long可以任取32或者64。一般的程序不应该直接用long,否则会出现32位/64位运行结果不一致的问题。
就PHP这个内置long的问题已经造成32位和64位运行环境下整数溢出上限不一致了。

什么算常用软件?浏览器算吗?你用浏览器测试下在跟我说你的猜测

32位系统已经不用起码5年了,没条件测试,还是不和你争了,我们就当单字节会变成双字节好了,大家happy就行。

64bit计算主要有两大好处:可以进行更大范围的整数运算;可以支持更大的内存。
不能因为数字上的变化,而简单的认为64bit处理器的性能是 32bit处理器性能的两倍。实际上在32bit应用下,32bit处理器的性能甚至会更强,即使是64bit处理器,目前情况下也是在32bit应用下性能更强。所以要认清64bit处理器的优点,但不可迷信64bit。
----------------百度百科
简单来说、64位和32位、他们处理整数数据单元的大小 一个是64位(8字节) 一个是32位。
64位系统占用的内存地址也是64位、因而比32位要耗内存。

人家把百度百科都当权威拿出来了,我们就不要理他就好了。

你知道啥!

是百度百科说错了。还是你啥也不懂呢?

可以支持更大的内存、更快速的寻址,不等于程序就会占用更多的内存。
比如说,一个服务器程序大约4M大小,开辟了250M的内存作为内部应用。迁移到64位系统,程序大小可能增长为8M大小(当然,这只是个比喻),但是仍然可能只需要开辟250M内存供内部使用。因此,(8M-4M)的变化对于该程序的总内存占用来说,算不了多少。
其实说的没错。魔兽世界等程序在64位系统占用更多内存,与系统本身关系不大,一定是该程序用空间换效率等其他方面的考虑。


有条件你关闭虚拟内存,用 Chrome Firefox 在 win32 win64 跑跑。你就不会说没差距了。试了才好说话。
到了8G 16G+内存成为最低标准,普及的时候,那个时候才能考虑,
现在一大堆4G内存的电脑跑win 64 ,还总吵吵硬盘太慢,那是因为内存不够,虚拟内存用的太多导致的

占用更大的内存是没错的,这就是一个trade-off,32位系统是根本用不到4G内存的,没有PAE的情况下只有3G多一点,现在旗舰手机都超2G的时代,3~4G内存的电脑估计过不了一两年就会淘汰掉了。
其实这也是看用途吧,没有必要一窝蜂全部上64位,计算密集型的肯定要上64位,而低功耗、移动设备上64位意义不是很大。至于游戏?我呵呵,代表游戏产业的不是只有PC好吗,自己去看Xbox One还有PS4……游戏主机才代表游戏的未来,有的主机上一代就开始用64位了。64位除了更大的内存,还有更多的指令集,以及更大的register地址。


64位的优点谁都知道,64位也是未来。
看清我说的重点 4G以内的内存是32位还是64 位!


QUOTE { 内存占用单字节变双字节,双字节变四字节,以此类推,内存占用必然增多。 }
REPLY { 单字节变双字节是什么鬼?只有指针会从32位变成64位,数据又不会变。 }
QUOTE { 简单来说、64位和32位、他们处理整数数据单元的大小 一个是64位(8字节) 一个是32位。64位系统占用的内存地址也是64位、因而比32位要耗内存。 }
我就引用上面的对话,你自己看你说的是什么,我说的是什么。
你觉得32位下占用1KB的char[1024]到了64位下会占用2KB么……
另外64位系统下32位程序性能比64位好我也是醉了。32位应用程序白白比64位程序少用了一堆寄存器,竟然还能运行得更快,有此黑科技请务必告诉我这是怎么做到的。
度娘百科还是不要引用的比较好,否则会引起很多笑话的。


你说你弱智不,还当自己会点啥!
你都指定char[1024]了,他必然是1024.能不能在弱点!!!
是32位CPU,跟64位CPU比较.麻烦你看字能不能仔细点
度娘的东西怎么也不你说的靠谱

顿时开始同情起你的逻辑能力了。
先是自己说单字节变双字节,双字节变四字节,以此类推,我举个单字节的char又说不会变,打自己脸也不能这样打啊,看着都没意思。
引用你「即使是64bit处理器,目前情况下也是在32bit应用下性能更强。」
能不能麻烦你自己发的东西自己看仔细点?
要是你真的觉得度娘能比我靠谱,那我们还是不要聊下去了,位面不同没法谈。
至于骂人弱智嘛,我也不是不能理解。总有人觉得别人都是弱智就自己智商特别高,特别优越。

一帮XX.都以为自己会点啥,轮番车轮战.
都跟你说了,你用32 跟 64的系统测试下,对比下,看看是不是64的占用内存非常大.
都在闭着眼睛说话.
多做几次测试看看,内存占用那么大,你行你就给我解释解释.
都办瓶子水,还真以为自己懂呢

有些行业 像我们的工控行业用旧系统很正常,有些软件有十年以上的历史。 现在工业现场用VB6 VC6比比皆是……

是的。遗留系统、嵌入式系统,当然不得不保留对32位、甚至16位系统的支持。
对于新的服务器端程序(基于x86-64),尤其是基于通用linux系统(例如CentOS、ubuntu等)的程序,我觉得可以考虑放弃32位版本了,同时维护两个版本的话对小公司而言成本有点高。


你接话能力可挺强啊
好,这个帖子,我不回复任何人了,就单独跟你聊下去
你先测试下.64位与32位比,双倍的内存占用,你解释下.


也不用那么多废话了.
整理了下你的思路,你的意思 "指针会从32位变成64位" 而数据内存占用不会变
我知道你根本可能都没测试过,就来讲一些不靠谱的理论.
你就说这多出近一倍的内存占用是谁占用?去哪了?为什么内存开销这么大?也总得有个用途吧?
别平白无故的被64位用的内存,被你一说好像没用是的.
你连测试都懒得测试,你能讲出什么理论啊

大清早的不想聊太多这种事情,累。
还是那句话,64位和32位比,不是比个浏览器比个魔兽就能解决问题的。
每个应用的情况都不一样。
比如32位程序因为有内存寻址模型影响,所以有2G的上限。
就算打开LAA大内存寻址,最大寻址空间也不能超过3G,因为3G以外的区域是内核保留的。
对于仅仅只有2G大小的内存空间来说,像山口山这样的程序就必须严格限制自己的内存消耗。
明明读取了一张图片或者一个材质,却因为顾及内存大小而不得不在稍后就清理掉以释放内存。
而对于64位的程序来说,内存空间可以用起来更轻松。
稍后还会用到的图片或者资源,就先在内存里放一下,反正就算整体内存占用超过2G也不会出问题。
这样虽然内存占用更大了,但是运行起来更流畅,延迟是更小。
山口山这种即时游戏,当然是运行效能越高越好。
浏览器里大量的图片、图层、javascript代码、flash广告,当然也是效能越高越好。
为了效能,多使用一些内存,就和ramdisk一样。要是这样就指责说占用内存过多,实在是冤枉了。
因此说64位的软件可以运行得更快,不只是纸上谈兵,是有实际依据的。
另外64位下可用的寄存器也更多。32位程序做64位计算的时候,必须要用到SSE指令集才能快速计算,否则就只能用32位计算来模拟,效率非常差。64位指令集加入了RAX等扩展寄存器,直接在寄存器上就可以做64位运算,节约了拷贝到SSE寄存器的时间,或是用32位计算来模拟的时间。
而且64位程序在编译的时候可以更好地利用编译器特性进行优化。例如现在很多Linux发行版里的32位程序都是基于i386编译,因为32位从20多年前的386就出现了。而64bit则可以直接对应现代处理器,例如P4或者速龙之后的版本,因此可以直接假定处理器会带有SSE指令集,也因此所有的可以并行的操作,都会去用SSE指令集来优化。例如memcpy,32位下为了兼容性可能只能逐字节复制,最多用MMX来优化(但是会和浮点数运算冲突),而64位下可以直接做MEM->XMMREG->MEM的批量复制,速度快得多。
对比以下代码
32位,i386兼容:
MOV EAX, [p]
MOV [q], EAX
一次复制4字节
64位,使用SSE:
MOVNTDQA XMM0, [p]
MOVNTDQA [q], XMM0
一次复制16字节
后者的性能至少是前者的2倍或者更多。
所以在同一个基准线上,64位的程序会运行得更快。


你的意思是64位内存占用大不是白用的,是被缓存了.开发人员用起来也会比较轻松.不用考虑太多内存占用的问题.你是想说类似MongoDB这种内存数据库吧,但是内存也得够大啊.
你举的64位的例子得在大量运算的情况下才明显,运算量小差别不明显.这是64位的优点.
而内存的开销相对与32位系统要大很多.
而对于4G的内存的64位系统,装上了你这样肆无忌惮的使用内存的程序.而不考虑内存情况,那结果就是内存不够用.或使用虚拟内存,或程序崩溃.
4G的内存32位的系统可以使用的非常舒服,而换成64位后,马上感觉内存不够了就必须升级内存.
这时32位系统的优势就明显了.吃内存少.这也是我想说的,4G以下的内存32位的系统

MongoDB只是其中一个特例。
我上面也说了,具体的情况需要具体分析,每个应用的情况都不一样。
有些软件对速度要求高,所以他们更吃内存一些。
你不能在享受到速度快的同时又去指责内存消耗大。
对于只有4G内存的系统来说,挑选合适的软件才是更重要的。
玩游戏的话本来就应该配置更多的内存以优化性能。
玩山口山天天H RAID或者5H的你只配个4G内存是几个意思。
应用程序,比如像Chrome这样的浏览器,以多进程高性能为卖点,本来就是吃内存吃得多。
如果要省着内存用,Opera显然是更合适的,省着点用2G内存都能跑得欢。
弹性内存占用,大内存吃得多,小内存吃得少,速度和资源占用兼顾。
至于4G内存。说起来我用4G已经是很久很久以前的事情了。
记得最起码4年前就已经在用8G了,3年前就在用16G了。
另外我从第一个回帖就已经说了,我针对的论点是你说的一变二的占用。
我不否认4G内存用32位更好,但是我不能接受你说的64位下占用率直接变2倍这种没有科学依据的说法。
只看表面现象不讨论本质,实在谈不上是科学依据。
这就天亮了,我也不多说了,睡觉去了。

看楼上论战我也是醉了,32位消耗略小这是有的
so what?
于是就该大多数人迁就少数老爷机?而且即使是4g以下,性能就真的差那么远么?能用老爷机的人,都是只上上网看看电影的人,谈什么性能?要用老爷机来玩游戏的人,只有一个原因,没钱。
以少数人的少量性能损失为代价,减轻了维护成本,加快了开发,事实上对所有人包括老爷机用户都是有利的
希望各位的讨论围绕主题,不要歪到单纯的性能比较上去,否则我还可以说单片机上8位最好

小vps继续32位

这得看小到什么程度啊。我觉得内存低于512M,可以使用32位,超过512M的都可以直接上64。
以我们生产环境的服务器(Debian系统)为例,32位系统时内存占用190M,CPU平均为5.1%,升级为64位系统后内存占用大约是200M, CPU平均为5%。内存占用略有提升,效率略有提高。
因此我觉得以目前的市场环境,内存不是制约因素,更好的扩展性、更强大的底层支持,都值得将系统升级到64位。另外非常重要的是,统一到64位,开发者的维护成本也要少一些。


虚拟机里 64位系统的进程切换更慢了
用sysbench测试的结果,
32位系统进程切换效率是64位的2倍
因为寄存器更多,需要更多的资源去调度

如果你看了32位和64位的代码调用传参的规定就不会这么认为了
以下内容来自https://zh.wikipedia.org/wiki/X86%E8%B0%83%E7%94%A8%E7%BA%A6%E5%AE%9A
在32位下面,所有参数都是压栈传递(除了fastcall,因为这个调用方式没有标准)
而在64位系统下面,微软x64调用约定使用RCX, RDX, R8, R9这四个寄存器传递头四个整型或指针变量(从左到右),使用XMM0, XMM1, XMM2, XMM3来传递浮点变量。
头六个整型参数放在寄存器RDI, RSI, RDX, RCX, R8和R9上,同时XMM0到XMM7用来放置浮点参数。
所以说除非你的程序不进行任何其他的函数调用,否则对性能上肯定是有提升的,不要相信百度百科的鬼话。

32位用 的只会越来越少

数据地带为您的网站提供全球顶级IDC资源
在线咨询
专属客服