Why managers should never be allowed to make decisions



  • Due to numerous developers' boxes thrashing because of limited ram, our firm recently announced we were all going to get new high powered laptops. joy

    Then they were delivered. Brand spanking new 8 core 2.8 ghz 6gb ram 500 gb internal hd 15" 1920x1200 hi res display (ok, everything is microscopic but with the contrast way up, everything is very crisp) - running 32 bit win xp sp3.

    And then they wonder why things are still thrashing "with all that ram".

     



  • And the WTF is... that they run Windows XP?

    So? That was probably cheaper than a Windows {Vista|7} license.

    If you work at a serious company, you should have MSDN and the ability to download, install, and use Windows 7 Ultimate x64.

    Edit:

    (Or use Gentoo if you're a ricer)



  • The WTF is that 32bit XP only allows you to use 3GB of the 6GB in the machines.

    TRWTF ofcourse is that you didn't see that.



  • I know that myself; that's why I was pointing out that Windows 7 Ultimate x64 is on MSDN.



  •  I haven't used Win XP in awhile, but I'm a bit surprised the professional version caps physical RAM at 4GB.



  • @morbiuswilters said:

     I haven't used Win XP in awhile, but I'm a bit surprised the professional version caps physical RAM at 4GB.

    32 bits is 32 bits regardless of OS.

    I finally got them all in a room and explained that by the time you take off 500mb for video memory, 750mb for windows, AV software, mandatory IM client, 500mb for outlook, word, excel, browser, an IDE, debugger, and an application or two, you've wiped out all your addressable ram and are thrashing.

    Priceless response: so you mean you can't just put more memory in the box - there's other stuff you need to consider too?

     



  • @snoofle said:

    32 bits is 32 bits regardless of OS.

    I finally got them all in a room

    You got all of the bits in a room?  Did that improve performance?


  • @bstorer said:

    @snoofle said:

    32 bits is 32 bits regardless of OS.

    I finally got them all in a room

    You got all of the bits in a room?  Did that improve performance?


    I'm not sure about 32 bits, but it's often said that the New York State government is run by 3 2-bits in a room, and it has not done wonders for performance.


  • @snoofle said:

    @morbiuswilters said:

     I haven't used Win XP in awhile, but I'm a bit surprised the professional version caps physical RAM at 4GB.

    32 bits is 32 bits regardless of OS.

    I finally got them all in a room and explained that by the time you take off 500mb for video memory, 750mb for windows, AV software, mandatory IM client, 500mb for outlook, word, excel, browser, an IDE, debugger, and an application or two, you've wiped out all your addressable ram and are thrashing.

    Priceless response: so you mean you can't just put more memory in the box - there's other stuff you need to consider too?

     

    How is it that these people get hired to manage IT and don't know a damned thing about computers!?  I knew this stuff before I graduated high school!



  • @Master Chief said:


    How is it that these people get hired to manage IT

    They get hired to manage, IT is incidental.

    and don't know a
    damned thing about computers!?  I knew this stuff before I graduated
    high school!

    I envy your youth :(



  • @snoofle said:

    @morbiuswilters said:

     I haven't used Win XP in awhile, but I'm a bit surprised the professional version caps physical RAM at 4GB.

    32 bits is 32 bits regardless of OS.

    Right, except that the logical address space is per-process and most modern 32-bit OSes can easily handle up to 36-bits of physical address space.  Have you actually never encountered a 32-bit machine with more than 4GB of RAM?



  • @morbiuswilters said:

    @snoofle said:

    @morbiuswilters said:

     I haven't used Win XP in awhile, but I'm a bit surprised the professional version caps physical RAM at 4GB.

    32 bits is 32 bits regardless of OS.

    Right, except that the logical address space is per-process and most modern 32-bit OSes can easily handle up to 36-bits of physical address space.  Have you actually never encountered a 32-bit machine with more than 4GB of RAM?

    We have them all over the place at work. In fact our domain controller used to be one.

    For those that don't get it, if you enable PAE (Physical Addressing Extensions), then a 32-bit OS can address up to 32GB of RAM. The per-process limit of 2GB or 3GB (depending on boot.ini settings) remains, of course.



  • @Exteris said:

    The WTF is that 32bit XP only allows you to use 3GB of the 6GB in the machines.
     

    3GB  per process, but two processes can use up 6GB or more just fine.



  • @morbiuswilters said:

    Right, except that the logical address space is per-process and most modern 32-bit OSes can easily handle up to 36-bits of physical address space.  Have you actually never encountered a 32-bit machine with more than 4GB of RAM?
    I have. Drivers for some custom hardware would make it BSOD every now and then, which is why PAE is disabled on 32bit non-server Windows (since XP SP1 onwards - XP without SP, and IIRC Win2000 supported PAE with a 4GB of physical RAM limit imposed by the OS).



  • @levbor said:

    @Exteris said:

    The WTF is that 32bit XP only allows you to use 3GB of the 6GB in the machines.
     

    3GB  per process, but two processes can use up 6GB or more just fine.

     

    Are you high?  How on Earth can a process use memory the operating system can't address?



  • @garyniger said:

    If you work at a serious company, you should have MSDN and the ability to download, install, and use Windows 7 Ultimate x64.

    I have the ability to download Win7U64, but I can't install it without management sign-off, and management will not sign off until the manager of IT puts it on the approved list. The additional WTF? They will not put it on the approved list as "It may contain unknown security holes. XP is proven technology.".

    Despite some machines have 8GB RAM...



  • @Mole said:

    They will not put it on the approved list as "It may contain unknown security holes. XP is proven technology.".

    Despite some machines have 8GB RAM...

    Meh. TRWTF is when your proven and approved XP also has to come with "proven" and approved IE6. Don't you just love local government.



  •  

    @levbor said:

    @Exteris said:

    The WTF is that 32bit XP only allows you to use 3GB of the 6GB in the machines.
     

    3GB  per process, but two processes can use up 6GB or more just fine.

     

    Are you high?  How on Earth can a process use memory the operating system can't address?

     

    http://en.wikipedia.org/wiki/Physical_Address_Extension

     Remember: "I don't understand how this could be done" != "doing this is impossible".



  •  Okay TRWTF is there is some confusion in this thread about 32 vs 64 bit.

     

    A 32 bit OS can address more than 4GB of ram. It is very common for Windows Server 2003 (32 bit) to run with 8 or 16 GB of ram (just a 2 or 3 GB per process limit).

     

    However, windows XP (with very similar base OS to server 2003) is limited to 4 GB of ram. This was done on purpose by microsoft, becuase they wanted to encourage people with lots of ram to move to a 64 bit os.



  • @Kyanar said:

    For those that don't get it, if you enable PAE (Physical Addressing Extensions), then a 32-bit OS can address up to 32GB of RAM.
    Except Microsoft has disabled this ability in all 32 bit versions of Windows.  It was available in Windows XP for a while but was disabled by service pack 2.  Here is an interesting alticle article that discusses this:

    http://www.geoffchappell.com/viewer.htm?doc=notes/windows/license/memory.htm

    The article is mainly about Vista but discusses other versions of Windows as well:

    "That 32-bit editions of Windows Vista are limited to
    4GB is not because of any physical or technical constraint on 32-bit operating systems.
    The 32-bit editions of Windows Vista all contain code for using physical memory
    above 4GB. Microsoft just doesn’t license you to use that code.


    Well, to say it that way is perhaps to put words in Microsoft’s mouth. I say
    the restriction to 4GB is a licensing issue because that’s how Microsoft’s programmers
    evidently have thought of it. The 4GB limit is retrieved from the registry by calling
    a function named
    ZwQueryLicenseValue
    ,
    which is itself called from an internal procedure which Microsoft’s published symbol
    files name as MxMemoryLicense."

     

     



  • @ender said:

    @morbiuswilters said:
    Right, except that the logical address space is per-process and most modern 32-bit OSes can easily handle up to 36-bits of physical address space.  Have you actually never encountered a 32-bit machine with more than 4GB of RAM?
    I have. Drivers for some custom hardware would make it BSOD every now and then, which is why PAE is disabled on 32bit non-server Windows (since XP SP1 onwards - XP without SP, and IIRC Win2000 supported PAE with a 4GB of physical RAM limit imposed by the OS).

    I don't buy it: I think it's the licensing thing.  I mean, I completely believe there was shitty hardware and/or drivers that would fuck up the kernel with PAE on, but shitty hardware and/or drivers that crash the OS are not something Microsoft would usually yank a feature over.



  • @El_Heffe said:

    @Kyanar said:

    For those that don't get it, if you enable PAE (Physical Addressing Extensions), then a 32-bit OS can address up to 32GB of RAM.
    Except Microsoft has disabled this ability in all 32 bit versions of Windows.  It was available in Windows XP for a while but was disabled by service pack 2.  Here is an interesting alticle article that discusses this:

    http://www.geoffchappell.com/viewer.htm?doc=notes/windows/license/memory.htm

    Fascinating, I had no idea that 32bit XP post-SP2 was crippled this way. I found this msdn page which seems to confirm it:

    http://msdn.microsoft.com/en-us/library/aa366778(VS.85).aspx

    I noticed that the 32-bit Windows Server 2003 table includes 128GB limits with PAE enabled; the 32-bit WindowsXP table stops at 4GB with no mention of PAE. They don't come out and *say* "oh you can't use PAE on XP" but comparing these two tables, that's what it looks like. The confusing thing is that if you go to the PAE page in the same section, it says it is supported with 32-bit XP. And, to add to the confusion, if you look up the "PAE technical reference", it says the reference only applies to Windows 2003.

    To sum up: I'm soooo glad I am not a Windows developer.

    @snoofle: At least, you can use 4GT (/3GB switch) to get your applications 3GB of virtual address space... If your application actually needs to support 32bit OS with large physicalmemory, maybe you can use AWE (Address Windowing Extensions).

    http://msdn.microsoft.com/en-us/library/aa366796(VS.85).aspx



  • I love that we're all going to have this discussion again in 20 years when Windows hits the 64-bit plateau in RAM utilization.  Or the next time Firefox releases a new version.



  • @belgariontheking said:

    I love that we're all going to have this discussion again in 20 years when Windows hits the 64-bit plateau in RAM utilization.  Or the next time Firefox releases a new version.

    Oh snap!



  • @aliquot said:

    [snip]


    Fascinating, I had no idea that 32bit XP post-SP2 was crippled this way. I found this msdn page which seems to confirm it:


    http://msdn.microsoft.com/en-us/library/aa366778(VS.85).aspx

    I noticed that the 32-bit Windows Server 2003 table includes 128GB limits with PAE enabled; the 32-bit WindowsXP table stops at 4GB with no mention of PAE. They don't come out and *say* "oh you can't use PAE on XP" but comparing these two tables, that's what it looks like. The confusing thing is that if you go to the PAE page in the same section, it says it is supported with 32-bit XP. And, to add to the confusion, if you look up the "PAE technical reference", it says the reference only applies to Windows 2003.

    To sum up: I'm soooo glad I am not a Windows developer.

    @snoofle: At least, you can use 4GT (/3GB switch) to get your applications 3GB of virtual address space... If your application actually needs to support 32bit OS with large physicalmemory, maybe you can use AWE (Address Windowing Extensions).

    http://msdn.microsoft.com/en-us/library/aa366796(VS.85).aspx

    Each process running in 32-bit Windows is still limited to a 4 GB virtual address space.

    Windows XP (32 bit) is on the list of OSs that support PAE.

     




  • @thinboy00 said:

    @aliquot said:

    [snip]


    Fascinating, I had no idea that 32bit XP post-SP2 was crippled this way. I found this msdn page which seems to confirm it:


    http://msdn.microsoft.com/en-us/library/aa366778(VS.85).aspx

    I noticed that the 32-bit Windows Server 2003 table includes 128GB limits with PAE enabled; the 32-bit WindowsXP table stops at 4GB with no mention of PAE. They don't come out and *say* "oh you can't use PAE on XP" but comparing these two tables, that's what it looks like. The confusing thing is that if you go to the PAE page in the same section, it says it is supported with 32-bit XP. And, to add to the confusion, if you look up the "PAE technical reference", it says the reference only applies to Windows 2003.

    To sum up: I'm soooo glad I am not a Windows developer.

    @snoofle: At least, you can use 4GT (/3GB switch) to get your applications 3GB of virtual address space... If your application actually needs to support 32bit OS with large physicalmemory, maybe you can use AWE (Address Windowing Extensions).

    http://msdn.microsoft.com/en-us/library/aa366796(VS.85).aspx

    Each process running in 32-bit Windows is still limited to a 4 GB virtual address space.

    Windows XP (32 bit) is on the list of OSs that support PAE.

     

     

    PAE allows the CPU to access more than 4GB of ram, a 32 bit application is still limited to 4GB of virtual address space though.



  • @morbiuswilters said:

    I don't buy it: I think it's the licensing thing.
    XP pre-SP2 (though I was sure it was SP1) allowed you to use up to 4GB of memory if you enabled PAE. XP post SP2 added NX support, which by itself requires PAE, and apparently Microsoft found that way too many drivers broke, so they reworked the memory management somewhat, resulting in the OS being able to address less memory than before (32bit Windows now only sees memory that is mapped below the 4GB barrier, which means anywhere between 1GB and 3,5GB, depending on your BIOS, the hardware in your machine, memory remap settings and moon phase).



  • @Master Chief said:

    @levbor said:

    @Exteris said:

    The WTF is that 32bit XP only allows you to use 3GB of the 6GB in the machines.
     

    3GB  per process, but two processes can use up 6GB or more just fine.

     

    Are you high?  How on Earth can a process use memory the operating system can't address?

     

    Take an introductory course in CS. It's called paging and the already mentioned PAE



  •  Just go in the BIOS and enable PAE  (Physical Address Extension)



  •  Trust me, Everyone who knows IT gets fucked because others can smooth-talk their way into positions they know nothing about.



  • Here's the full info about 32 bit memory limits on Windows XP and above:

    Hardware memory space and program virtual memory space are seperate. The hardware memory space includes all ram and device DMA space (normally the same size as the device's onboard ram). Ram counts up from 0B, device space counts down from 4GB. If the two overlap, the devices take priority. On 64-bit and PAE systems, the extra ram gets pushed to above 4GB. PAE raises the upper limit for hardware addresses (ram + device addresses) to 64GB.

    Virtual memory is always 4GB on 32-bit systems (even with PAE), and normally divided in half, with the lower half for programs and the upper half for the system. Virtual memory has nothing to do with the amount of ram in your system, every program gets the same (multiple GB) amount. Virtual memory can be mapped to ram, the pagefile (often mistakenly referred to as virtual memory), files from disk, device DMA (normally only done in system virtual memory) just reserved, trapped with an access trigger (used for automatically extending stack memory) or not mapped to anything.

    Windows supports PAE. Before XP SP1, it had to be enabled in the boot.ini manually. Very few drivers supported it as it wasn't required for WHQL signed drivers. Drivers that didn't support it had no way of saying so, they'd just malfunction (probably crash) when given a virtual memory address which mapped to a hardware address above 4GB. Microsoft didn't officially support the option.

    After XP SP1, PAE had to be enabled by default for NX support. Microsoft realised that most customers had at least one driver on their system that wasn't compatible with PAE, and didn't want XP SP1 to cause instability in most PCs. Given that they had no way of checking a driver for PAE support, that the problems with PAE only occur with hardware addresses over 4GB, and they had two other OSs* which supported over 4GB addresses perfectly fine, they chose to cap 32-bit XP to 4GB of hardware addresses. * = The other two OSs are Windows Server 2003 (whose driver signing required PAE support) and XP x64.

    The /3GB boot.ini option changes the split between program virtual memory and system virtual memory to be 3GB:1GB. This is incompatible with a lot of graphics drivers, due to trying to map the entirity of the graphics card's ram into system space, and there being much less space available.

    Again there are problems. A lot of 32-bit software assumes addesses will always be below 2GB, which only needs 31 bits of address, so have stolen the upper (32nd) bit to use for other things, or assume any address with the 32nd bit set is invalid (programs can't access system ram). With /3GB, these programs would break. As a compromise, Microsoft added the "LARGE_ADDRESS_AWARE" flag that programs could use to advertise that they weren't programmed retardedly.
     On a 64-bit system, a LARGE_ADDRESS_AWARE 32-bit program will get [b]all 4GB[/b] of address space.

    A program can use AWE (Address Windowing Extensions) to access more than 2-4GB of ram. It's a pain in the arse to use though.

    MS Exchange and MSSQL used to use AWE to support large datasets on 32-bit PAE systems. The new versions don't use AWE any more, they ask you to use the 64-bit version if you need such a large amount of ram.

     

    Moral: Don't fuck about trying to use more than 2GB of ram in 32-bit Windows, just install Windows x64 already.



  • @Thief^ said:

    Moral: Don't fuck about trying to use more than 2GB 3GB of ram in 32-bit Windows, just install Windows x64 already.
     

    FTFY, otherwise a very nice story and afaik completely correct.



  • 32bit means 32bit pointers right?
    2^32 = 4GB so without using special code you can't represent more than 4GB of data.



  • @XIU said:

    32bit means 32bit pointers right?
    2^32 = 4GB so without using special code you can't represent more than 4GB of data.

    First, the N64 was a '32-bit' device that used certain '64-bit' operations. TYPES and STRUCTS are nothing more than mappings to memory.

    Second, if an application only knows that 0xFF is what malloc() gives it, it can logically say "Cool! I have ZOMG huge amounts of memory!"

    Thats what PAE does, it tells applications that certain things are not what they really are and run things in a "memory box".

    Thirdly, I've got 32-bit linux machines (because i'm too damn lazy to run amd64 on a few) that have 16, 32 and 128 gigs of RAM. Did I mention they're blade servers that run Ubuntu and use Infiniband for their networking?



  • @Indrora said:

    @XIU said:
    32bit means 32bit pointers right?
    2^32 = 4GB so without using special code you can't represent more than 4GB of data.

    First, the N64 was a '32-bit' device that used certain '64-bit' operations. TYPES and STRUCTS are nothing more than mappings to memory.

    Second, if an application only knows that 0xFF is what malloc() gives it, it can logically say "Cool! I have ZOMG huge amounts of memory!"

    Thats what PAE does, it tells applications that certain things are not what they really are and run things in a "memory box".

    Thirdly, I've got 32-bit linux machines (because i'm too damn lazy to run amd64 on a few) that have 16, 32 and 128 gigs of RAM. Did I mention they're blade servers that run Ubuntu and use Infiniband for their networking?

    What in the fuck?  Nothing you said makes sense.  PAE works by using 36 bits to address physical memory.  This requires a small change to the kernel paging code.  Logical addresses are still 32-bit, so applications don't see anything different.  Sometimes there are problems with drivers or DMA hardware that make assumptions about where they get mapped.



  • @XIU said:

    32bit means 32bit pointers right?
    2^32 = 4GB so without using special code you can't represent more than 4GB of data.

    Right, so the logical address space is limited to 4GB (2GB or 3GB actually usable when you take out the kernel segment).  Each process has its own logical address space, though, so behind the scenes the hardware and kernel can map your 32-bit pointer to a 36-bit physical address.  Each process "sees" 4GB of memory but the kernel and hardware "see" a bit more than that and can place a process' memory anywhere they like, with the process none-the-wiser.



  • @dtech said:

    @Thief^ said:

    Moral: Don't fuck about trying to use more than 2GB 3GB of ram in 32-bit Windows, just install Windows x64 already.
     

    FTFY, otherwise a very nice story and afaik completely correct.

    One of many things I tried to edit, but this forum has far too short an edit timeout.

    The best bit is that there are bioses out there that reserve so much physical address space for devices that your PC would cap out at 2GB of ram, and I've heard reports of even worse.



  • @Thief^ said:

    Here's the full info about 32 bit memory limits on Windows XP and above:

    Hardware memory space and program virtual memory space are seperate. The hardware memory space includes all ram and device DMA space (normally the same size as the device's onboard ram). Ram counts up from 0B, device space counts down from 4GB. If the two overlap, the devices take priority. On 64-bit and PAE systems, the extra ram gets pushed to above 4GB. PAE raises the upper limit for hardware addresses (ram + device addresses) to 64GB.

    Virtual memory is always 4GB on 32-bit systems (even with PAE), and normally divided in half, with the lower half for programs and the upper half for the system. Virtual memory has nothing to do with the amount of ram in your system, every program gets the same (multiple GB) amount. Virtual memory can be mapped to ram, the pagefile (often mistakenly referred to as virtual memory), files from disk, device DMA (normally only done in system virtual memory) just reserved, trapped with an access trigger (used for automatically extending stack memory) or not mapped to anything.

    Windows supports PAE. Before XP SP1, it had to be enabled in the boot.ini manually. Very few drivers supported it as it wasn't required for WHQL signed drivers. Drivers that didn't support it had no way of saying so, they'd just malfunction (probably crash) when given a virtual memory address which mapped to a hardware address above 4GB. Microsoft didn't officially support the option.

    After XP SP1, PAE had to be enabled by default for NX support. Microsoft realised that most customers had at least one driver on their system that wasn't compatible with PAE, and didn't want XP SP1 to cause instability in most PCs. Given that they had no way of checking a driver for PAE support, that the problems with PAE only occur with hardware addresses over 4GB, and they had two other OSs* which supported over 4GB addresses perfectly fine, they chose to cap 32-bit XP to 4GB of hardware addresses. * = The other two OSs are Windows Server 2003 (whose driver signing required PAE support) and XP x64.

    The /3GB boot.ini option changes the split between program virtual memory and system virtual memory to be 3GB:1GB. This is incompatible with a lot of graphics drivers, due to trying to map the entirity of the graphics card's ram into system space, and there being much less space available.

    Again there are problems. A lot of 32-bit software assumes addesses will always be below 2GB, which only needs 31 bits of address, so have stolen the upper (32nd) bit to use for other things, or assume any address with the 32nd bit set is invalid (programs can't access system ram). With /3GB, these programs would break. As a compromise, Microsoft added the "LARGE_ADDRESS_AWARE" flag that programs could use to advertise that they weren't programmed retardedly.
     On a 64-bit system, a LARGE_ADDRESS_AWARE 32-bit program will get all 4GB of address space.

    A program can use AWE (Address Windowing Extensions) to access more than 2-4GB of ram. It's a pain in the arse to use though.

    MS Exchange and MSSQL used to use AWE to support large datasets on 32-bit PAE systems. The new versions don't use AWE any more, they ask you to use the 64-bit version if you need such a large amount of ram.

     

    Moral: Don't fuck about trying to use more than 2GB of ram in 32-bit Windows, just install Windows x64 already.

    +1, Informative



  • @aliquot said:

    To sum up: I'm soooo glad I am not a Windows developer.

     

    Yeah, it's just unbelievable that Microsoft can't seem to come up with a 64-bit OS already.  And I'll bet that when they do, they'll come up with some stupid name for it like Vista or Windows 7.



  •  Or XP x64.



  • @Indrora said:

    @XIU said:
    32bit means 32bit pointers right?
    2^32 = 4GB so without using special code you can't represent more than 4GB of data.

    First, the N64 was a '32-bit' device that used certain '64-bit' operations. TYPES and STRUCTS are nothing more than mappings to memory.

    Second, if an application only knows that 0xFF is what malloc() gives it, it can logically say "Cool! I have ZOMG huge amounts of memory!"

    Thats what PAE does, it tells applications that certain things are not what they really are and run things in a "memory box".

    Thirdly, I've got 32-bit linux machines (because i'm too damn lazy to run amd64 on a few) that have 16, 32 and 128 gigs of RAM. Did I mention they're blade servers that run Ubuntu and use Infiniband for their networking?

     

    PAE does nothing at all at the application level, it simply allows the CPU to address more than 4GB by using a 36 bit addressing scheme rather than a 32 bit one. Applications themselves are still 32 bit and therefore limited to a4GB virtual address space same as ever.



  • @Thief^ said:

     Or XP x64.

    Or Win2k AS and DS for ia-64, which predate all of them.



  •  @morbiuswilters said:

    @Thief^ said:

     Or XP x64.

    Or Win2k AS and DS for ia-64, which predate all of them.

    Wasn't NT 3.51 available for the DEC Alpha?  Yeah, I'm old.



  • @upsidedowncreature said:

     @morbiuswilters said:

    @Thief^ said:

     Or XP x64.

    Or Win2k AS and DS for ia-64, which predate all of them.

    Wasn't NT 3.51 available for the DEC Alpha?  Yeah, I'm old.

    Yep, but it was 32-bit only.  The first 64-bit release of NT was 2k AS and DS for ia64.


Log in to reply
 

Looks like your connection to What the Daily WTF? was lost, please wait while we try to reconnect.