On Fri, 09 Aug 2019 23:50:43 +0200, Chris Murphy wrote:
> $ cmake -DPORT=GTK -DCMAKE_BUILD_TYPE=RelWithDebInfo -GNinja

RelWithDebInfo is -O2 -g build.  That is not suitable for debugging, for
debugging you should use -DCMAKE_BUILD_TYPE=Debug (that is -g).
RelWithDebInfo is useful for final rpm packages but those are build in Koji.

Debug build will have smaller debug info so the problem may go away.

If it does not go away then tune the parallelism. Low -j makes the build
needlessly slow during compilation phase while high -j (up to about #cpus
+ 2 or so) will make the final linking phase with debug info to run out of
memory. This is why LLVM has separate "-j" for the linking phase but that is
implemented only in LLVM CMakeLists.txt files:
        https://llvm.org/docs/CMake.html
        LLVM_PARALLEL_LINK_JOBS
So that you leave the default -j high but set LLVM_PARALLEL_LINK_JOBS to 1 or 2.

Other options for faster build times are also LLVM specific:
        -DLLVM_USE_LINKER=gold (maybe also lld now?)
         - as ld.gold or ld.lld are faster than ld.bfd
        -DLLVM_USE_SPLIT_DWARF=ON
         - Linking phase no longer deals with the huge debug info

Which should be applicable for other projects by something like (untested!):
        -DCMAKE_C_FLAGS="-gsplit-dwarf"
        -DCMAKE_CXX_FLAGS="-gsplit-dwarf"
        -DCMAKE_EXE_LINKER_FLAGS="-fuse-ld=gold -Wl,--gdb-index"
        -DCMAKE_SHARED_LINKER_FLAGS="-fuse-ld=gold -Wl,--gdb-index"

(That gdb-index is useful if you are really going to debug it using GDB as
I expect you are going to do when you want RelWithDebInfo and not Release; but
then I would recommend Debug in such case anyway as debugging optimized code
is very difficult.)


> is there a practical way right now of enforcing CPU
> and memory limits on unprivileged applications?

$ help ulimit
      -m        the maximum resident set size
      -u        the maximum number of user processes
      -v        the size of virtual memory

One can also run it with 'nice -n19', 'ionice -c3'
and/or "cgclassify -g '*':hammock" (config attached).

But after all I recommend just more memory, it is cheap nowadays and I find
64GB just about the right size.


Jan
mount {
        cpu     = /cgroup/cpu;
        memory  = /cgroup/memory;
        blkio   = /cgroup/blkio;
}

group hammock {
        perm {
                task {
                        uid = jkratoch;
                        gid = jkratoch;
                }
                admin {
                        uid = jkratoch;
                        gid = jkratoch;
                }
        }
        cpu {
                cpu.shares = 2;
        }
        memory {
                memory.limit_in_bytes = 2G;
        }
        blkio {
                blkio.weight = 100;
        }
}
_______________________________________________
devel mailing list -- devel@lists.fedoraproject.org
To unsubscribe send an email to devel-le...@lists.fedoraproject.org
Fedora Code of Conduct: 
https://docs.fedoraproject.org/en-US/project/code-of-conduct/
List Guidelines: https://fedoraproject.org/wiki/Mailing_list_guidelines
List Archives: 
https://lists.fedoraproject.org/archives/list/devel@lists.fedoraproject.org

Reply via email to