Announcement

Collapse
No announcement yet.

Ubuntu 12.04 LTS: 32-bit vs. 64-bit Performance

Collapse
X
  • Filter
  • Time
  • Show
Clear All
new posts

  • #16
    Originally posted by jakubo View Post
    it has been the case that applications on 64bit used twice as much ram. does anyone know the reason?
    Well, 64-bit applications will use more ram due to address references being 64-bit as opposed to 32-bit but it should hardly amount to 'twice as much' unless the code in question is nothing but address references (which of course it's not). I've seen some statement that 64-bit code is typically ~15-20% larger than the equivalent 32-bit code which seems to ring true with the numbers on my systems.

    Comment


    • #17
      IMO, if your PC supports 64 bit at all, you should be using 64 bit. It is way faster in just about every multimedia application, Flash issues are absolute history (you could have just ran the 32 bit edition when they didn't have 64 bit flash,) better disk performance, for the most part drivers are a non-issue, etc. We should have moved over to 64 bit as the default with 64 bit PCs back in '06. When people say you should only use 64 bit when you have 4 gigs or more of RAM, they really don't know WTF they are talking about. Also mind you, on Linux in general, 99% of packages are compiled for 64 bit so many more packages get a speed up unlike 64 bit Windows which for the most part runs 32 bit applications.

      Comment


      • #18
        There are real gains for everyday use as well. For instance, file decompression is a task that you have to do often, and IIRC there are sizeable gains there as well.

        Yes, 64-bit applications do use more memory; however, that usually isn't much of an issue. The issue is only if you have a slow disk - it will take longer to load the application. Otherwise, RAM is fast enough for the size increase not to be an issue at all. And don't forget that free RAM is wasted RAM - you need to have it filled up as much as possible anyway (same with disk space - copy-on-write file systems show that very clearly). You can precache a few less apps in RAM when using 64-bit, but that won't be much of an issue, either, since with current amounts of RAM most of it is going to waste anyway.

        Oh, and another reason to stick with 64-bit is that there already are 64-bit-only apps (in fact, Creative X-Fi beta drivers come to mind), not to mention that since most people code on 64-bit machines to save time needed for compilation, they also test their programs on 64-bit machines as well, so it's a better supported platform right now.
        Last edited by GreatEmerald; 02-28-2012, 12:42 PM.

        Comment


        • #19
          i'm surprised how many people here are not very supportive of 64 bit when linux is pretty much the absolute best x86-64 compatible OS.

          64 bit is more memory consuming, but not nearly as much as people are acting like it does. Note that in Windows, 64 bit is VERY memory consuming because windows basically runs 2 of everything - a 32 bit compatibility layer and then the normal 64 bit processes. since 64 bit addresses twice as much memory per instruction, all 32 bit programs end up taking up twice as much memory, whereas 64 bit programs often don't take up any extra at all. in linux, you don't need to worry about that because pretty much everything is compiled for 64 bit.

          64 bit linux is pretty much just as compatible as 32 bit, assuming you have at least 1gb, the memory differences are insignificant, and you get noticeably more performance.

          Comment


          • #20
            64 bit kernel, 32 bit userspace

            I'd be curious to see benchmarks of a 64 bit kernel with a 32 bit userspace. I've been doing this quite a while on a few boxes with smaller amounts of RAM. And it seems to go fine.

            Comment


            • #21
              Originally posted by LinuxID10T View Post
              IMO, if your PC supports 64 bit at all, you should be using 64 bit. It is way faster in just about every multimedia application, Flash issues are absolute history (you could have just ran the 32 bit edition when they didn't have 64 bit flash,) better disk performance, for the most part drivers are a non-issue, etc. We should have moved over to 64 bit as the default with 64 bit PCs back in '06. When people say you should only use 64 bit when you have 4 gigs or more of RAM, they really don't know WTF they are talking about. Also mind you, on Linux in general, 99% of packages are compiled for 64 bit so many more packages get a speed up unlike 64 bit Windows which for the most part runs 32 bit applications.
              i never found 64 bit helped at all on the first athlon 64s.

              Comment


              • #22
                Originally posted by schmidtbag View Post
                64 bit is more memory consuming, but not nearly as much as people are acting like it does. Note that in Windows, 64 bit is VERY memory consuming because windows basically runs 2 of everything - a 32 bit compatibility layer and then the normal 64 bit processes. since 64 bit addresses twice as much memory per instruction, all 32 bit programs end up taking up twice as much memory, whereas 64 bit programs often don't take up any extra at all. in linux, you don't need to worry about that because pretty much everything is compiled for 64 bit.
                As someone else already pointed out, 64 bit applications consume about 15-20% more memory, due to pointers being 64 bit instead of 32 bit.

                Your information about Windows is plain nonsense though. 64 bit Windows applications run natively (same as on Linux), no compatibility layer needed. 32 bit applications run on top of an emulation layer, which intercepts system calls and translates between 32 bit and 64 bit. While the emulation layer itself requires some memory, it does not magically double the amount of RAM an application uses.

                Since I'm at work right now, I've run a few quick checks on some of our VMs. When comparing IE 32 vs IE 64 (on the same machine) the memory consumption for the 64 bit version is about 18% higher. When comparing IE 32 @ 64 against IE on a 32 bit machine, memory consumption is roughly the same.

                I agree that Linux has the upper hand because (almost) everything is 64 bit nowadays (except for proprietary stuff like Skype), but spreading FUD about Windows doesn't gain us anything.

                Comment


                • #23
                  The Newly Converted

                  Originally posted by schmidtbag View Post
                  ...64 bit linux is pretty much just as compatible as 32 bit, assuming you have at least 1gb, the memory differences are insignificant, and you get noticeably more performance.
                  Because I am not a trusting person, I ran "free" on my 1 GB 32 bit server and it told me that less than 10% of the installed memory was "used" with 90%+ going to buffers, cache, and free. 64 bit might mean I lose about 3% of my buffers and cache. I can not imagine a scenario in which a 3% reduction in buffers and cache would offset the performance benefits of 64 bit. SOLD.

                  Comment


                  • #24
                    Originally posted by Wildfire View Post
                    As someone else already pointed out, 64 bit applications consume about 15-20% more memory, due to pointers being 64 bit instead of 32 bit.

                    Your information about Windows is plain nonsense though. 64 bit Windows applications run natively (same as on Linux), no compatibility layer needed. 32 bit applications run on top of an emulation layer, which intercepts system calls and translates between 32 bit and 64 bit. While the emulation layer itself requires some memory, it does not magically double the amount of RAM an application uses.

                    Since I'm at work right now, I've run a few quick checks on some of our VMs. When comparing IE 32 vs IE 64 (on the same machine) the memory consumption for the 64 bit version is about 18% higher. When comparing IE 32 @ 64 against IE on a 32 bit machine, memory consumption is roughly the same.

                    I agree that Linux has the upper hand because (almost) everything is 64 bit nowadays (except for proprietary stuff like Skype), but spreading FUD about Windows doesn't gain us anything.
                    emulation layer, compatibility layer, big difference. what you were defining as this emulation layer was pretty much what i was saying, just worded better. i'm not saying this layer magically doubles the amount of memory, what i should have said is 32 bit programs running in 64 bit can OFTEN use UP TO double the amount of ram usage, due to 64 bit being double the amount of registers. so when running 32 bit programs you might find that half of the registers are not in use because 32 bit programs don't use them.

                    i've noticed in a fresh new install of windows vista or 7, when turning off stuff like prefetching an superfectching, the 64 bit version uses ALMOST twice the amount of memory as 32 bit, and IIRC, it is because of this "emulation layer". i'm not sure about windows vista or 7, but in windows xp 64 bit, i've noticed that many (not all) 32 bit programs would use up nearly twice as much ram as they would on 32 bit systems.

                    Comment


                    • #25
                      Originally posted by schmidtbag View Post
                      emulation layer, compatibility layer, big difference. what you were defining as this emulation layer was pretty much what i was saying, just worded better. i'm not saying this layer magically doubles the amount of memory, what i should have said is 32 bit programs running in 64 bit can OFTEN use UP TO double the amount of ram usage, due to 64 bit being double the amount of registers. so when running 32 bit programs you might find that half of the registers are not in use because 32 bit programs don't use them.
                      Sorry to disappoint you but this is nonsense. (the RAM usage thing)

                      Comment


                      • #26
                        it is quite a while ago, but wasnt AMD saying that for 32 bit programs it will be like multitasking? that the processor will take both 32 bit things at once? it was back then (i think i read about it in CHIP - magazine when the first athlon 64 came about)

                        even if they dont, would there be a way to make the processor do it? maybe its not worth while, as more programs are going 64 bit (or all are) but for programs that really dont require it: would it be an option? would it technically work at all?

                        actually i though that this is what is x32 thats to come being about

                        Comment


                        • #27
                          Originally posted by drago01 View Post
                          Sorry to disappoint you but this is nonsense. (the RAM usage thing)
                          mind explaining why? what i've described is what i've seen first-hand. 32 bit binaries running on 64 bit operating systems ARE generally more memory consuming. running a 64 bit binary of the same program on a 64 bit OS generally is just as memory consuming as the 32 bit version - once in a while i've seen the 64 bit version use up a bit more memory. maybe what i said about the registers is wrong, but here's how i see it:

                          Lets say you have a refridgerator that can store 3 1-gallon jugs OR 6 half-gallon jugs, where the refridgerator's storage capacity is the total RAM, the 1-gallon jugs are 64-bit programs, and the half-gallon jugs are 32-bit programs. The fluid inside the jugs resembles how much RAM is being used for the programs. for argument's sake, lets just say you can't just simply mix and match the jugs or their contents.
                          So, lets say you're running a 32-bit OS and you're running a program that uses 2 full half-gallon jugs. The same program native to a 64-bit OS gets twice the registers, so you could then buy a 1-gallon jug of the same drink and you'd take up the same amount of space in the fridge. But, lets say that the drink isn't served in 1-gallon jugs, so you're stuck with a 1-gallon fridge and half-gallon jugs. You would end up with 2 1-gallon jugs which would each be half-filled with the same drink.

                          So, if you think this is "nonsense", mind explaining how it REALLY works with the same analogy?

                          Comment


                          • #28
                            The biggest reason I don't use 64 bit is I want my old, still playable games to work. Case in point: on a fresh install of opensuse 12.1 with 32bit libs installed; Penumbra series segfault. Coldwar no audio, even when creating a symlink to the libopenal on the system. Ut2004 worked by symlinking to the 64 bit libopenal, but not the 32 bit even running the 32 bit executable (yes I know there's a 64 bit too).

                            If there are people who have these games installed and running properly on a 64 bit system, please tell me

                            Comment


                            • #29
                              Originally posted by schmidtbag View Post
                              I've noticed in a fresh new install of windows vista or 7, when turning off stuff like prefetching an superfectching, the 64 bit version uses ALMOST twice the amount of memory as 32 bit, and IIRC, it is because of this "emulation layer". i'm not sure about windows vista or 7, but in windows xp 64 bit, i've noticed that many (not all) 32 bit programs would use up nearly twice as much ram as they would on 32 bit systems.
                              So what you're saying is, the OS itself uses almost twice as much. I haven't tested it myself, but what you say makes sense, this is probably the emulation layer.

                              I've never heard the term register used in conjunction with RAM though, imho register is usually used in combination with the CPU. To stay with your analogy: If your available memory is a refrigerator, then your jugs would equal reserved memory and the juice would equal the amount of reserved memory that's actually used. Reserved memory doesn't come in fixed sizes though, so every application gets its own "custom" jug in the size it requested. If an application requests 10M of memory it gets a junk of memory in that size.
                              One reason I can think of why an application could end up using twice as much memory is, if the amount of memory it requests is somehow based on size of a data type whose size depends on the architecture, eg. sizeof(int). If your application requests 100 x sizeof(int) and sizeof(int) is 32 on a 32 bit architecture and 64 on 64 bit architecture your application would end up reserving twice as much.

                              Comment


                              • #30
                                Originally posted by Wildfire View Post
                                So what you're saying is, the OS itself uses almost twice as much. I haven't tested it myself, but what you say makes sense, this is probably the emulation layer.

                                I've never heard the term register used in conjunction with RAM though, imho register is usually used in combination with the CPU. To stay with your analogy: If your available memory is a refrigerator, then your jugs would equal reserved memory and the juice would equal the amount of reserved memory that's actually used. Reserved memory doesn't come in fixed sizes though, so every application gets its own "custom" jug in the size it requested. If an application requests 10M of memory it gets a junk of memory in that size.
                                One reason I can think of why an application could end up using twice as much memory is, if the amount of memory it requests is somehow based on size of a data type whose size depends on the architecture, eg. sizeof(int). If your application requests 100 x sizeof(int) and sizeof(int) is 32 on a 32 bit architecture and 64 on 64 bit architecture your application would end up reserving twice as much.
                                when i was using the term register i was referring to the cpu itself, ram has little to do with registers. i guess i should've been more specific where the jugs are the amount of cpu registers and the contents are how many registers are used. I was pretty tired when i wrote that analogy. so does that change anything? i think i understand what you're trying to say now but you're focusing more on the userspace level, which is generally what uses up the most memory but doesn't define much of what happens to it at the architectural level; the architectural level is the important part because thats why 64 bit is often considered to be more memory consuming.

                                Comment

                                Working...
                                X