You are not logged in.

#1 2021-04-08 17:00:44

mocambo
Member
Registered: 2017-09-24
Posts: 23

Pacman architecture issue and SSE2 diff between i686 and pentium4

Hello !

Recently upgraded from Manjaro32 to Archlinux32. All went well, without big issues. The transition was performed with pacman 5.2.1-4-i686 and pacman.conf has Architecture = auto setting. All packages in my computer are i686 now.

After upgrading to pacman 5.2.2-2.0-i686 it started downloading packages for pentium4 architecture. After changing pacman.conf setting to Architecture = i686, pacman just refuses to perform system upgrade, saying

:: package somepackage-1.2.3-4.0-pentium4 does not have a valid architecture

It still attempts to download pentium4 packages despite correct setting in pacman.conf. It seems to me, that there is an hidden place more in settings, what i have to fix to i686.

Why it so strongly sticks to pentium4? Any ideas ?

I run Archlinux32 on SSE2 capable PentiumM.

#cat /etc/pacman.d/mirrorlist
## Switzerland
Server = https://archlinux32.andreasbaumann.cc/$arch/$repo
Server = http://archlinux32.andreasbaumann.cc/$arch/$repo
# uname -m
i686
# cat /proc/cpuinfo
processor	: 0
vendor_id	: GenuineIntel
cpu family	: 6
model		: 13
model name	: Intel(R) Pentium(R) M processor 1.73GHz
stepping	: 8
microcode	: 0x20
cpu MHz		: 800.019
cache size	: 2048 KB
physical id	: 0
siblings	: 1
core id		: 0
cpu cores	: 1
apicid		: 0
initial apicid	: 0
fdiv_bug	: no
f00f_bug	: no
coma_bug	: no
fpu		: yes
fpu_exception	: yes
cpuid level	: 2
wp		: yes
flags		: fpu vme de pse tsc msr pae mce cx8 apic sep mtrr pge mca cmov clflush dts acpi mmx fxsr sse sse2 ss tm pbe bts cpuid est tm2
bugs		: cpu_meltdown spectre_v1 spectre_v2 spec_store_bypass l1tf mds swapgs itlb_multihit
bogomips	: 1600.70
clflush size	: 64
cache_alignment	: 64
address sizes	: 32 bits physical, 32 bits virtual
power management:

Last edited by mocambo (2021-04-08 22:29:29)

Offline

#2 2021-04-08 19:16:04

deep42thought
Administrator
From: Jena, Germany
Registered: 2017-06-17
Posts: 608

Re: Pacman architecture issue and SSE2 diff between i686 and pentium4

Most probably, your database is still the pentium4 database - you need to do a

pacman -Syy

to force an update of your package database.

Offline

#3 2021-04-08 20:02:25

levi
Moderator
From: Yorkshire, UK
Registered: 2018-06-16
Posts: 1,009

Re: Pacman architecture issue and SSE2 diff between i686 and pentium4

I'll just note that if your CPU is a Pentum D that supports SSE2, then archlinux32's auto setting should result in pentium4 packages.  The only slight complexity is that switching from i686 to pentium4 needs your packages to all be refreshed to work reliably.  You can do that with a call to

pacman -Qqn | pacman -S -

Architecture: pentium4, Testing repos: Yes, Hardware: EeePC 901+2GB RAM+OS half on the SD card.

Offline

#4 2021-04-08 20:39:45

mocambo
Member
Registered: 2017-09-24
Posts: 23

Re: Pacman architecture issue and SSE2 diff between i686 and pentium4

deep42thought wrote:

Most probably, your database is still the pentium4 database - you need to do a

pacman -Syy

to force an update of your package database.

Thanks ! That does the trick. As always, the solution is the simplest of the possible options.

Offline

#5 2021-04-08 20:58:34

mocambo
Member
Registered: 2017-09-24
Posts: 23

Re: Pacman architecture issue and SSE2 diff between i686 and pentium4

levi wrote:

I'll just note that if your CPU is a Pentum D that supports SSE2, then archlinux32's auto setting should result in pentium4 packages.  The only slight complexity is that switching from i686 to pentium4 needs your packages to all be refreshed to work reliably.  You can do that with a call to

pacman -Qqn | pacman -S -

Thanks ! I will definitely do that.

As I understand, transition to pentium4 will give additional 2% of performance. And that performance will mostly come from SSE2 optimized Linux kernel. But as I guess, some packages are already SSE2 capable also in i686 repositorium. For example Firefox, as it have SSE2 as a minimum requirement. And some packages doesnt care about SSE2, they are same in both repositoriums.

Is there any information, which packages in pentium4 repositorium are specially configured to use SSE2 benefit, so they are different from i686 brothers ? And what other packages more have SSE2 enabled in both i686 and pentium4? In other words I am interested in real SSE2 diff between i686 and pentium4. Is there an easy way to find out that ?

Offline

#6 2021-04-08 22:23:34

levi
Moderator
From: Yorkshire, UK
Registered: 2018-06-16
Posts: 1,009

Re: Pacman architecture issue and SSE2 diff between i686 and pentium4

All packages in the pentium4 repository have been built to allow the compiler to emit SSE2 instructions, at least for everything that's not just some perl/python scripts (which will usually be built for architecture 'any').  It's not impossible to find out using static analysis which files that have been built contain SSE2 opcodes, but not quick to do, and I'm not sure it's worth much beyond mild interest.

I'm not sure how we can still have an i686 build of firefox if it actually requires SSE2 as you say, but it seems we do.


Architecture: pentium4, Testing repos: Yes, Hardware: EeePC 901+2GB RAM+OS half on the SD card.

Offline

#7 2021-04-09 04:55:40

deep42thought
Administrator
From: Jena, Germany
Registered: 2017-06-17
Posts: 608

Re: Pacman architecture issue and SSE2 diff between i686 and pentium4

The truth is, that some packages in i686 need sse2 (like firefox), others, that would need sse2, are missing on i686. So I would recommend using the pentium4 repositories, if your cpu supports sse2.
We tried to use some opcode sniffer in the past to hunt down packages using too high instruction sets, but we didn't get far - IOW: There is no simple way to show opcode diffs for all packages.

Offline

#8 2021-04-09 06:23:31

levi
Moderator
From: Yorkshire, UK
Registered: 2018-06-16
Posts: 1,009

Re: Pacman architecture issue and SSE2 diff between i686 and pentium4

That doesn't explain why there are versions of firefox in the i686 repos, as up to date as the pentium4 repos are.  If the SSE2 mnemonics are hard coded in the source files as assembler instructions then I guess the compiler, even if you told it not to generate SSE2 instructions will still assemble those, but I guess we should not publish those if they do include those non-functional-on-old-computers instructions.


Architecture: pentium4, Testing repos: Yes, Hardware: EeePC 901+2GB RAM+OS half on the SD card.

Offline

Board footer

Powered by FluxBB