Skip to content

Conversation

@mjp41
Copy link
Member

@mjp41 mjp41 commented Feb 3, 2023

All the checks and mitigations have been placed under feature flags.
These can be controlled by defining

SNMALLOC_CHECK_CLIENT_MITIGATIONS

This can take a term that represents the mitigations that should be enabled.
E.g.
-DSNMALLOC_CHECK_CLIENT_MITIGATIONS=nochecks+random_pagemap

The CMake uses this to build numerous versions of the LD_PRELOAD library and
tests to allow individual features to be benchmarked.

@mjp41
Copy link
Member Author

mjp41 commented Feb 3, 2023

This still needs a lot of documenting, and some cmake magic to build the many different versions. I have posted a draft PR for CI feedback, and early comments on the shape.

@mjp41 mjp41 force-pushed the split_check_client branch 2 times, most recently from 039918f to eae588c Compare February 9, 2023 20:51
@mjp41 mjp41 marked this pull request as ready for review February 10, 2023 21:41
@mjp41 mjp41 force-pushed the split_check_client branch 6 times, most recently from eb600cb to a26a5ca Compare February 23, 2023 16:18
@mjp41
Copy link
Member Author

mjp41 commented Feb 23, 2023

Here is a run of cfrac from mimalloc-bench with the various mitigations turned on in sequence:

  • sn-m0 is no mitigations
  • sn-m1 is metadata_protection
  • sn-m2 is sn-m1 + pal_enforce_access
  • sn-m3 is sn-m2 + random_pagemap
  • sn-m4 is sn-m3 + sanity_checks
  • sn-m5 is sn-m4 + freelist_forward_edge
  • sn-m6 is sn-m5 + freelist_backward_edge
  • sn-m7 is sn-m6 + freelist_teardown_validate
  • sn-m8 is sn-m7 + reuse_LIFO
  • sn-m9 is sn-m8 + random_larger_thresholds
  • sn-m10 is sn-m9 + random_initial
  • sn-m11 is sn-m10 + random_preserve
  • sn-m12 is sn-m11 + random_extra_slab
  • sn-chk is sn-m12 + Guarded Memcpy
  • mi is mimalloc 1.7.7 (given for a point of comparison)

WARNING: Truncated axes.

graph

(Graph based on @jvoisin's script in mimalloc-bench)

@mjp41 mjp41 force-pushed the split_check_client branch 2 times, most recently from 77b074d to f44a400 Compare February 23, 2023 17:06
@mjp41 mjp41 requested review from davidchisnall and nwf-msr March 6, 2023 20:42
All the checks and mitigations have been placed under feature flags.
These can be controlled by defining

  SNMALLOC_CHECK_CLIENT_MITIGATIONS

This can take a term that represents the mitigations that should be enabled.
E.g.
  -DSNMALLOC_CHECK_CLIENT_MITIGATIONS=nochecks+random_pagemap

The CMake uses this to build numerous versions of the LD_PRELOAD library and
tests to allow individual features to be benchmarked.

Co-authored-by: Nathaniel Wesley Filardo <nfilardo@microsoft.com>
@mjp41 mjp41 force-pushed the split_check_client branch from f44a400 to 0fc5bbd Compare March 13, 2023 20:28
@mjp41 mjp41 merged commit ccca98a into microsoft:main Mar 23, 2023
@mjp41 mjp41 deleted the split_check_client branch March 23, 2023 13:41
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant