How functional Slackware 14.1+ is indeed in a i486 machine?
SlackwareThis Forum is for the discussion of Slackware Linux.
Notices
Welcome to LinuxQuestions.org, a friendly and active Linux Community.
You are currently viewing LQ as a guest. By joining our community you will have the ability to post topics, receive our newsletter, use the advanced search, subscribe to threads and access many other special features. Registration is quick, simple and absolutely free. Join our community today!
Note that registered members see fewer ads, and ContentLink is completely disabled once you log in.
If you have any problems with the registration process or your account login, please contact us. If you need to reset your password, click here.
Having a problem logging in? Please visit this page to clear all LQ-related cookies.
Get a virtual cloud desktop with the Linux distro that you want in less than five minutes with Shells! With over 10 pre-installed distros to choose from, the worry-free installation life is here! Whether you are a digital nomad or just looking for flexibility, Shells can put your Linux machine on the device that you want to use.
Exclusive for LQ members, get up to 45% off per month. Click here for more info.
From: Linus Torvalds <torvalds@osdl.org>
CMOV (and, more generically, any "predicated instruction") tends to
generally a bad idea on an aggressively out-of-order CPU. It doesn't
always have to be horrible, but in practice it is seldom very nice, and
(as usual) on the P4 it can be really quite bad.
On a P4, I think a cmov basically takes 10 cycles.
So now, where you've narrowed it down to a single instruction and got disproved by the kernel inventor himself, I think we can close the case.
Oh, You Glorius Master of Assembly, looks like on the test program what you narrowed, my humble outdated computer where I work now (an silly Bulldozer X8 Black Edition with only 16G RAM, still running Slackware 32) have another opinion from you:
Code:
bash-4.3# time ./test.with_cmov
600000000
real 0m0.101s
user 0m0.100s
sys 0m0.000s
bash-4.3# time ./test.normal
600000000
real 0m0.134s
user 0m0.133s
sys 0m0.001s
bash-4.3#
So, without CMOV, we have a slowdown about 33%. How you comment?
Last edited by Darth Vader; 05-29-2014 at 01:07 PM.
Then do it yourself first (with all packages but -noarch ones rebuilt, of course) and come back with a link to an ISO image of it. I'm sure that a lot of us will be grateful for that and eager to try it. Maybe you could get advises from Eric or Stuart who already did something similar.
If I do that, there will be Yet Another Slackware Fork. And no, I do not want to fork Slackware (again).
So, this time, I want to see the community interest. And the Slackware community contribution and help. As a project to possibly enhance the Slackware.
For example, while I have no problems to do a i686 build (after all I earn a life from maintaining a in-house i686 server distro derived from Slackware), who offer the web hosting for packages and its ISOs?
Also, is there someone another interested to (re)build packages? There we have "only" like 1000 to manage...
Call me fundamentalist, but I prefer the orthodox Slackware 32, and I need to use some 32 bit only apps, while I dislike (no offense, Eric!) the multilib, as a suplementary complication.
Also, I love and I find very useful the 4G memory limit per process...
I believe that Slackware (32) is not really much slower that the x64 version, yet it is not of use of all processor horse-power. The subject of this thread also...
Last edited by Darth Vader; 05-29-2014 at 01:20 PM.
Just drop 32 bits support. We have had 64 bits processors avaliable for years (at least 10). And, for example, Windows XP 64 bits was release 12 years ago (!!!!) It bothers me that people still use and still develop for 32 bits. Some companies/people release things in 32 BITS ONLY forcing us with atrocities like multilib.
Last edited by moisespedro; 05-29-2014 at 01:25 PM.
cmov problem is a intel one, just like reads from a page boundary are (and other non aligned reads/writes, but over a 4k boundary especially)
yay market leaders
Just drop 32 bits support. We have had 64 bits processors avaliable for years (at least 10). And, for example, Windows XP 64 bits was release 12 years ago (!!!!) It bothers me that people still use and still develop for 32 bits. Some companies/people release things in 32 BITS ONLY forcing us with atrocities like multilib.
I would support that, but only if I can be around when you explain to users of these CPUs http://ark.intel.com/search/advanced...tionSet=32-bit (note how the newest one is only 4 years old) why you think they shouldn't use Slackware.
bash-4.3# time ./test.with_cmov
600000000
real 0m0.101s
user 0m0.100s
sys 0m0.000s
bash-4.3# time ./test.normal
600000000
real 0m0.134s
user 0m0.133s
sys 0m0.001s
bash-4.3#
If I do that, there will be Yet Another Slackware Fork. And no, I do not want to fork Slackware (again).
So, this time, I want to see the community interest. And the Slackware community contribution and help. As a project to possibly enhance the Slackware.
For example, while I have no problems to do a i686 build (after all I earn a life from maintaining a in-house i686 server distro derived from Slackware), who offer the web hosting for packages and its ISOs?
Also, is there someone another interested to (re)build packages? There we have "only" like 1000 to manage...
If you don't want to fork Slackware, then just request Pat to replace i486 with i686. Good luck.
And to get other people to contribute to something, you have to first build a team of individuals sharing you aim and eager to devote time to help reach it (but maybe that was the purpose of your first post in this thread?), and/or to attract people showing what you've already done. At least that's my opinion.
Last edited by Didier Spaier; 05-29-2014 at 02:16 PM.
I think you are starting from this naive assumption that somehow telling the optimizer to target the 686 is going to magically make everything better. It doesnt work that way. Compiler optimizations are not guaranteed, the results depend not only on the target but also on the initial code, etc. If you want to optimize for a 686, the way to do it is to target particular modules that actually do something *specific* which would benefit from a 686 instruction, rewrite the code to make that explicit, THEN do a couple of compiles with different switches, test them, compare the assembler, etc. Simply taking existing code and turning on the compiler instruction-set optimization is not guaranteed to improve anything - it very well might break it, or reduce performance.
You also have to remember that these CPUs are already optimized for their most common use case, which is running proprietary binaries. Users of proprietary software dont have the option to edit and recompile so the CPU manufacturers have put a huge amount of work into optimizing new CPUs to run old code. YES, if you are doing something specific where a later instruction would be helpful (matrix math comes to mind) AND you can do some testing and rewriting to make it all work correctly, you could see a very large increase in performance, but that's an exceptional case. It would be more typical to see negligible effects either way, or even noticeable slowdown and bloat, from enabling un-needed optimizers.
So I think Pat's taken exactly the correct approach here by being conservative with CPU targets. It's unlikely that forcing a higher build target across the board would actually result in a better system, but it would certainly result in a system that would no longer run on some of our hardware.
If you identify a specific package that actually does, say, a lot of matrix math, you would probably be better off recompiling that one specific package with optimizations, and leaving the rest of the distro the way it is.
I'm not certain if compiling for i686 improves processing speed, but let's say it does.
Personally, switching to i686 isn't worth it. If I'm concerned about processor speed, I'm going x86_64. If I'm using an old computer, it's probably because I have been for a long time, and I want as few architectural changes as possible. The speed boost gained from i686 doesn't justify cutting older computers out of the picture, especially when the real speed is in x86_64.
Also I am willing to collaborate in this recompilation for i686.
I guess my computer can handle reasonable as build-server. Like I said, Phenom 9550 with 4G memory. The hard drive works about at 100MB/s as transfer rate.
Sorry my humble opinion, but to take a classic example of conditional move used i.e. for a nice "IF THEN ELSE":
i486 code
Code:
XOR EBX,EBX ; Clear register for later
ADD ECX,[SMALL_COUNT] ; Adjusts by some small counter value
JNC Continue ; If ECX didn't overflow, continue
MOV ECX,EBX ; Reinitialize ECX if it overflowed
Continue:
Executed on 4 opcode reads.
i686 code
Code:
XOR EBX,EBX ; Clear register for later
ADD ECX,[SMALL_COUNT] ; Adjusts by some small counter value
CMOVC ECX,EBX ; If ECX overflowed, reinitialize to EBX
Executed on 3 opcode reads.
And the latter code will not run on all 686 processors. CMOV was not available on certain Cyrix and VIA processors. While admitted only a limited number of chips, they were quite popular and widely used in both laptop and desktop boards.
I use a very old computer as a router/firewall, file server, database and cups at home. I will add some cameras and weight scale into it, when I have chance to scavenge some used usb cameras, make it a simple security system at home, when people pushes my door bell, it will send snap pictures and weight number to my phone.
old computer was PentiumII 233, whole system's power consumption used to be around 50W, later I switched it to celeron 533A and other parts, reduced it down to 30W. All the parts I scavenged from other people's junks throughout many years.
A consumer graded router couldn't do a lot thing as well as a old used computer (a dedicated commercial router ) and I agree, more efficient computer is the better way, if you can manage it at minimum cost.
LinuxQuestions.org is looking for people interested in writing
Editorials, Articles, Reviews, and more. If you'd like to contribute
content, let us know.