리눅스 ia64 플랫폼에서 PostgreSQL을 구동하다 보니 /var/log/messages 파일에 floating-point assist fault 메시지가 계속 쌓여 문제를 해결해보고자 한다.

해결 방법은 아래와 같이 컴파일 시에 -ffast-math 옵션을 주고 컴파일하거나 dmesg 명령어로 syslog의 floating-point assist 메시지를 끄는 것이다.

dmseg로 메시지 기능을 끄면 다른 에러도 쌓이지 않을 수 있으니 컴파일 시 -ffast-math 옵션을 주는 것이 좋을 것 같다.

출처 : http://h21007.www2.hp.com/portal/site/dspp/menuitem.863c3e4cbcdc3f3515b49c108973a801?ciid=62080055abe021100055abe02110275d6e10RCRD

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 <fenv.h>
    :
 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: It is also possible to completely turn off the floating-point assist messages. To do this, simply issue the command

  $ dmesg -n4
as "root".

'형상관리 > 리눅스' 카테고리의 다른 글

CentOS 5.5 한글 설정  (0) 2011.09.19
CentOS 5.5 나눔글꼴 설치  (1) 2011.09.19
리눅스 USB 마운트  (0) 2009.03.01
리눅스(RHAS 4.0) S-ATA하드를 IDE로 인식시켜 설치하기  (0) 2009.02.15
telnet troubleshooting  (0) 2008.04.02
Posted by dcmru
,