Frequently asked questions (FAQ) about Spike

»

Developers' toolkit supplement

Product information

» DTK history
» Download kits
» License and support
» Programmer's guide online
» Related web sites

Related links

» HP software
» Tru64 UNIX
» Developers' Toolkit supplement
» DSPP developer edge
» Info library
» Documentation
» Try our software
» Purchasing
» Site map
customer times newsletter link
» Why do I get the message "Insufficient Virtual Memory?"
» Is it possible to Spike a NUMA kernel?
» Can Spike process a V5.1 kernel?
 
 Why do I get the message "Insufficient Virtual Memory?"
 

Spike is a large program, and needs a lot of virtual address space. When you get the error message that you do not have enough virtual memory, you may need to increase your virtual address space.

One or more of the following suggestions may help:

  • Increase the amount of virtual address space available for your process. This can be done by the user (for example, with the limit command in csh) as follows:

       % limit datasize unlimited
       % limit memoryuser unlimited
       % limit addressspace unlimited
          
  • The way that Spike allocates memory requires that the stack size be limited to 32 KB. Normally, some systems, such as those running high performance technical computing applications, run with higher stack size limits. In the C-shell, you can change your stack size by using the limit command as follows:
       limit stacksize 32768
    
  • Process limits may be modified for the entire system by modifying /etc/sysconfigtab. If you modify /etc/sysconfigtab, you will need to modify or add the following entries after "proc:" and then reboot.
       max-per-proc-data-size=0x100000000
       max-per-proc-address-space=0x100000000
    

Note: The values specified are suggested minimums for using Spike. If you already have higher values for these set, you won't need to change them.

 
 Is it possible to Spike a NUMA kernel?
 

Yes. Spike is able to process a Non-Uniform Memory Access (NUMA) kernel. However, there is a detail that is specific to these kernels that must be taken into consideration. A NUMA kernel requires that the text and data segments both need to start on 8 MB boundaries.

Spiking a program can cause Spike to increase the size of the Text segment. If this happens, the text segment may overlap the data segment, resulting in a kernel that will not boot. If this happens, Spike will print a warning message.

Note: The kernel that is generated will NOT boot!

If the warning message is printed, you must repeat the Spike command, but you must explicitly specify a start address in the Spike command line by using the -D option.

For example, the following command will start the data segment 16 MB into kernel space.

   spike -D 0xffffffff01000000
 
 Can Spike process a V5.1 kernel?
 

Spike is able to process kernels built for operating system releases V5.1 and higher. However, additional information needs to be put into the kernel in version V5.1 to enable the Spike utility to properly process the image.

In order to do this, follow the steps below:

  • Install a new linker (ld) from any V5.1 patch kit. The linker that shipped with the initial V5.1 release will not build a kernel that can be spiked.

  • Set the __ENABLE_KERNEL_SPIKING environment variable in your current shell.

  • Run doconfig to build a new kernel with the special information with the new linker.
    It is recommended that you read the Spike release notes before rebooting this kernel.

  • Profile and spike the new kernel.

Note: All operating systems after V5.1 (eg, V5.1A, V5.1B), will come with this information already available. These steps are only needed on V5.1 systems. If you are unaware of which release of the operating system you are running, run the program:

   /usr/sbin/sizer -v