วันศุกร์ที่ 2 เมษายน พ.ศ. 2553

Messages In Console: Oracle(9581): Floating-Point Assist Fault At Ip [ID 279456.1]


 

  Modified 27-JAN-2010     Type PROBLEM     Status PUBLISHED  

In this Document
  Symptoms
  Cause
  Solution
  References


Applies to:

Oracle Server - Enterprise Edition - Version: 10.1.0.2 to 10.1.0.2
Red Hat Enterprise Linux Advanced Server Itanium
UnitedLinux Itanium
Oracle Server Enterprise Edition - Version: 10.1.0.2 to 10.1.0.2
Checked for relevance on 25-Feb-2009

This note is applicable on Itanium Architecture only

Symptoms

In the server console appears messages like

oracle(9581): floating-point assist fault at ip 40000000068c22c2
...
oracle(13763): floating-point assist fault at ip 40000000072b8081

Cause

The messages are not errors,
just information/warning that the operation being performed by the processor needed a software assist.

As reported on
http://h21007.www2.hp.com/portal/site/dspp/menuitem.863c3e4cbcdc3f3515b49c108973a801?ciid=62080055abe021100055abe02110275d6e10RCRD


We reproduce here part of this article titled What's up with those "floating-point assist fault" messages? - Linux on Itanium

When working at the Linux console or looking through the kernel's log file in /var/log/messages,
you may encounter messages of the form:

test-fpsr(1416): floating-point assist fault at ip 40000000000005d2

This message means that program "test-fpsr" with process id 1416 performed a floating-point
operation that required software assistance.
On Itanium, this usually happens when operating on IEEE denormals
(numbers that cannot be represented in normalized form).

Again, just like for unaligned accesses, these operations are emulated in the kernel,
so there is nothing to worry from a correctness point of view. However,
emulating these operations takes time and can slow down a program significantly.
Since most programs don't need full IEEE-compliance, Itanium Linux
provides a function to turn on "flush-to-zero" mode in the processor,
which avoids generating IEEE denormals as a result of ordinary floating-point calculations.
This mode can be turned on using the following code fragment:

#include
:
fesetenv (FE_NONIEEE_ENV);
:

Alternatively, compiler option -ffast-math can be used when linking
the final program to achieve the same effect. For example:

gcc -ffast-math test.o -o test

would build program "test" with flush-to-zero mode turned on.

Note:
the Oracle code cannot be changed or compiled such that the condition that generates the message is eliminated.
This because the hardware doesn't support the floating-point operation being reque

Solution

It is possible to completely turn off the floating-point assist messages from the console (they are still written to /var/log/messages)
To do this, simply issue the command as "root":
$ dmesg -n4

To eliminate them also from /var/log/messages :

1. edit /etc/syslog.conf changing line:
 *.info;mail.none;authpriv.none;cron.none               /var/log/messages
  to
*.error;mail.none;authpriv.none;cron.none               /var/log/messages
This means any facility logging messages below error level will be suppressed

2. restart syslog
service syslog restart
         
To explain wht is being suppressed:
From the syslog man page:

Every  text  line  in  a  message  has  its own loglevel.
This level is  DEFAULT_MESSAGE_LOGLEVEL - 1 (6) unless the line starts with <d>  where  d  is  a digit in the range 1-7,
in which case the level is d. The conventional meaning of the loglevel is  defined  in  <linux/kernel.h>  as follows:

       #define KERN_EMERG    "<0>"  /* system is unusable               */
       #define KERN_ALERT    "<1>"  /* action must be taken immediately */
       #define KERN_CRIT     "<2>"  /* critical conditions              */
       #define KERN_ERR      "<3>"  /* error conditions                 */
       #define KERN_WARNING  "<4>"  /* warning conditions               */
       #define KERN_NOTICE   "<5>"  /* normal but significant condition */
       #define KERN_INFO     "<6>"  /* informational                    */
       #define KERN_DEBUG    "<7>"  /* debug-level messages             */

The n4 in the dmesg command means to filter messages of "warning conditions" of which the floating point software assist messages are.  The *.error in syslog.conf means all levels below e

References

BUG:3777000 - FLOATING-POINT ASSIST FAULT(FPSWA) CAUSES POOR PERFORMANCE
BUG:3796598 - KERNEL: ORACLE(570): FLOATING-POINT ASSIST FAULT AT IP CAUSES CONNECTION PROBLEM
http://i-cluster2.inrialpes.fr/doc/misc/fpswa.txt
http://bugpriority.oraclecorp.com/pls/bugpriority/DWB_RFA_HTML.RFA_ADMIN?P_RFA_REQUEST_ID=1158
http://h21007.www2.hp.com/portal/site/dspp/menuitem.863c3e4cbcdc3f3515b49c108973a801?ciid=62080055abe021100055abe02110275d6e10RCRD

Show Related Information Related


Products
  • Oracle Database Products > Oracle Database > Oracle Database > Oracle Server - Enterprise Edition

0 ความคิดเห็น:

แสดงความคิดเห็น