Does Memchecker cause performance degradation to my application?
The configure option –enable-memchecker (together with –enable-debug) does cause performance degradation, even if not running under Valgrind. The following explains the mechanism and may help in making the decision whether to provide a cluster-wide installation with –enable-memchecker. There are two cases: • If run without Valgrind, the Valgrind ClientRequests (assembler instructions added to the normal execution path for checking) do not affect overall MPI performance. Valgrind ClientRequests are explained in detail in Valgrind’s documentation. In the case of x86-64 ClientRequests boil down to the following four rotate-left (ROL) and one xchange (XCHG) assembler instructions (from valgrind.h): #define __SPECIAL_INSTRUCTION_PREAMBLE \ “rolq $3, %%rdi; rolq $13, %%rdi\n\t” \ “rolq $61, %%rdi; rolq $51, %%rdi\n\t” and __asm__ volatile(__SPECIAL_INSTRUCTION_PREAMBLE \ /* %RDX = client_request ( %RAX ) */ \ “xchgq %%rbx,%%rbx” \ : “=d” (_zzq_result) \ : “a” (& _zzq_args[0]), “0” (_zzq_d
Related Questions
- What are the performance implications of -AA versus -AP? What is the characteristic of an application that can cause performance degradation?
- Does the management and monitoring process for virtual machines cause any significant performance degradation or bandwidth shortages?
- Will the High Impact eMail add-on cause any performance degradation?