CPU Issues and Speculative Execution



  • Debian,Fedora
  • LLVM,ZFS,Lustre
  • Oracle Sparc,RISC-V
  • Oracle,Nexenta,Scality,Pure Storage,Wonderware,Rockwell Automation,Synology,F5,Qubes,Qubes,Fortinet,Netap

Updated Google cloud section to mention Retpoline a compile time fix for Variant 2 (part of  Spectre) with “almost no performance loss.”


Huge Pages for Informix on SPARC Solaris

To get hugh pages for Informix on Solaris

1. Set RESIDENT to a value other than 0, >0 means the first N shared memory segments will be pinned in memory.


2. Make sure IFX_LARGE_PAGES is not set to 0.


3. To get pages >4MB in size the hardware must have support for 2GB pages, run pagesize -a to check what the hardware supports


4,  Either use ppgsz or mpss.so.1

The three ways to change the default page size for an application are:

  • Use the Oracle Solaris OS command ppgsz(1).
  • Compile the application with the -xpagesize, -xpagesize_heap, and -xpagesize_stack options. See the compiler man pages for details.
  • Use MPSS specific environment variables. See the mpss.so.1(1) man page for details.


ppgsz is documented at


mpss.so.1 is documented at


5. Note

Solaris has had large parges for many years. Initially, a large page on SPARC was 4MB. Then, much later, Solaris 9 added new APIs for Multiple Page Size Support. At that time, the maximum supported by hardware was 256MB. Today, the T4 processor supports page sizes up to 2GB.


6. UltraSPARC II/III/III+/IV/IV+ and UltraSPARC T1 (aka Niagara) only support large pages of 4MB


7. Check none of these to disable large pages are being used


  • set exec_lpg_disable = 1This parameter prevents large pages from being used when the kernel is allocating memory for processes being executed. These constitute the memory needed for a processes’ text/data/bss.
  • set use_brk_lpg = 0This parameter prevents large pages from being used for heap. To enable large pages for heap, set the value of this parameter to 1 or remove this parameter from /etc/system completely.

    brk() is the kernel routine that is called whenever a user level application invokes malloc().

  • set use_stk_lpg = 0This parameter disables the large pages for stack. Set it to 1 to retain the default functionality.
  • set use_zmap_lpg = 0This variable controls the size of anonymous (anon) pages.
  • set use_text_pgsz4m = 0This tunable disables the default use of 4M text pages on UltraSPARC-III/III+/IV/IV+/T1 platforms.
  • set use_text_pgsz64k = 0This tunable disables the default use of 64K text pages on UltraSPARC-T1 (Niagara) platform.
  • set use_initdata_pgsz64k = 0This tunable disables the default use of 64K data pages on UltraSPARC-T1 (Niagara) platform.

8.The T4 processor was the first to add “Support for a much larger Memory Management Unit page size (2GB)”

Click to access o11-090-sparc-t4-arch-496245.pdf



OS: Solaris 10 8/11 (Update 10) or later
Hardware: SPARC T4. eg., SPARC T4-1, T4-2 or T4-4”