Skip to content
  • Kostya Kortchinsky's avatar
    [sanitizer] Introduce a vDSO aware time function, and use it in the allocator [redo] · d276d724
    Kostya Kortchinsky authored
    Summary:
    Redo of D40657, which had the initial discussion. The initial code had to move
    into a libcdep file, and things had to be shuffled accordingly.
    
    `NanoTime` is a time sink when checking whether or not to release memory to
    the OS. While reducing the amount of calls to said function is in the works,
    another solution that was found to be beneficial was to use a timing function
    that can leverage the vDSO.
    
    We hit a couple of snags along the way, like the fact that the glibc crashes
    when clock_gettime is called from a preinit_array, or the fact that
    `__vdso_clock_gettime` is mangled (for security purposes) and can't be used
    directly, and also that clock_gettime can be intercepted.
    
    The proposed solution takes care of all this as far as I can tell, and
    significantly improve performances and some Scudo load tests with memory
    reclaiming enabled.
    
    @mcgrathr: please feel free to follow up on
    https://reviews.llvm.org/D40657#940857 here. I posted a reply at
    https://reviews.llvm.org/D40657#940974.
    
    Reviewers: alekseyshl, krytarowski, flowerhack, mcgrathr, kubamracek
    
    Reviewed By: alekseyshl, krytarowski
    
    Subscribers: #sanitizers, mcgrathr, srhines, llvm-commits, kubamracek
    
    Differential Revision: https://reviews.llvm.org/D40679
    
    llvm-svn: 320409
    d276d724
Loading