[all-commits] [llvm/llvm-project] 0fb2ae: Use u16 to store Count/MaxCount

ChiaHungDuan via All-commits all-commits at lists.llvm.org
Thu Oct 13 16:35:28 PDT 2022


  Branch: refs/heads/main
  Home:   https://github.com/llvm/llvm-project
  Commit: 0fb2aeef5310eaba2915b30810464a744a80da15
      https://github.com/llvm/llvm-project/commit/0fb2aeef5310eaba2915b30810464a744a80da15
  Author: Chia-hung Duan <chiahungduan at google.com>
  Date:   2022-10-13 (Thu, 13 Oct 2022)

  Changed paths:
    M compiler-rt/lib/scudo/standalone/local_cache.h
    M compiler-rt/lib/scudo/standalone/primary32.h
    M compiler-rt/lib/scudo/standalone/primary64.h
    M compiler-rt/lib/scudo/standalone/release.h
    M compiler-rt/lib/scudo/standalone/size_class_map.h
    M compiler-rt/lib/scudo/standalone/tests/combined_test.cpp
    M compiler-rt/lib/scudo/standalone/tests/primary_test.cpp
    M compiler-rt/lib/scudo/standalone/tests/release_test.cpp
    M compiler-rt/lib/scudo/standalone/tests/size_class_map_test.cpp
    M compiler-rt/lib/scudo/standalone/tools/compute_size_class_config.cpp

  Log Message:
  -----------
  Use u16 to store Count/MaxCount

The Count/MaxCount used in TransferBatch and PerClass can be fit in u16 in
current configurations and it's also reasonable to have a u16 limit. The
spare 16 bits will be used for additional status like pages mapping
status in a TransferBatch.

Reviewed By: cryptoad, cferris, vitalybuka

Differential Revision: https://reviews.llvm.org/D133145


  Commit: 56dafd024ca7f586a31be3ee858e6b3588a1e131
      https://github.com/llvm/llvm-project/commit/56dafd024ca7f586a31be3ee858e6b3588a1e131
  Author: Chia-hung Duan <chiahungduan at google.com>
  Date:   2022-10-13 (Thu, 13 Oct 2022)

  Changed paths:
    M compiler-rt/lib/scudo/standalone/primary32.h
    M compiler-rt/lib/scudo/standalone/primary64.h
    M compiler-rt/lib/scudo/standalone/release.cpp
    M compiler-rt/lib/scudo/standalone/release.h
    M compiler-rt/lib/scudo/standalone/tests/release_test.cpp

  Log Message:
  -----------
  [scudo] Add PageReleaseContext to convey page usage status.

PageReleaseContext contains all the information needed for determing if
a page can be released. Splitting out the context increases the flexibility
of heterogenous free lists in the future. Also rename PackedCounterArray to
PageMap.

Reviewed By: cryptoad, cferris

Differential Revision: https://reviews.llvm.org/D133895


  Commit: cf9d7f55d3bec7640fa8b2f8ec1d9c1268233caa
      https://github.com/llvm/llvm-project/commit/cf9d7f55d3bec7640fa8b2f8ec1d9c1268233caa
  Author: Chia-hung Duan <chiahungduan at google.com>
  Date:   2022-10-13 (Thu, 13 Oct 2022)

  Changed paths:
    M compiler-rt/lib/scudo/standalone/allocator_config.h
    M compiler-rt/lib/scudo/standalone/list.h
    M compiler-rt/lib/scudo/standalone/local_cache.h
    M compiler-rt/lib/scudo/standalone/primary32.h
    M compiler-rt/lib/scudo/standalone/primary64.h
    M compiler-rt/lib/scudo/standalone/tests/combined_test.cpp
    M compiler-rt/lib/scudo/standalone/tests/list_test.cpp
    M compiler-rt/lib/scudo/standalone/tests/primary_test.cpp

  Log Message:
  -----------
  [scudo] Manage free blocks in BatchGroup.

Scudo is supposed to allocate any blocks across the entired mapped
pages and each page is equally likely to be selected. Which means Scudo
is leaning to touch as many pages as possible. This brings better
security but it also sacrifices the chance of releasing dirty pages.

To alleviate the unmanagable footprint growing, this CL introduces the
BatchGroup concept. Each blocks will be classified into a BatchGroup
according to its address. While allocation, we are leaning to allocate
blocks in the same group first. Note that the blocks selected from a
group is still random over several pages. At the same time, we have
better prediction of dirty page growing speed. Besides, we are able to
do partial page releasing by examing part of BatchGroups.

Reviewed By: cryptoad, cferris

Differential Revision: https://reviews.llvm.org/D133897


  Commit: 9c26f51f5e178ac0fda98419e3a61d205d3b58b1
      https://github.com/llvm/llvm-project/commit/9c26f51f5e178ac0fda98419e3a61d205d3b58b1
  Author: Chia-hung Duan <chiahungduan at google.com>
  Date:   2022-10-13 (Thu, 13 Oct 2022)

  Changed paths:
    M compiler-rt/lib/scudo/standalone/local_cache.h
    M compiler-rt/lib/scudo/standalone/primary32.h
    M compiler-rt/lib/scudo/standalone/primary64.h
    M compiler-rt/lib/scudo/standalone/tests/combined_test.cpp

  Log Message:
  -----------
  [scudo] Support partial page releasing

Block grouping enables us doing partial page releasing so that we can
release the pages in a finer granularity. Which means we don't need to
visit all blocks to determine which pages are unused. Besides, this
means we can do incremental page releasing depends on the number fo free
blocks.

Reviewed By: cryptoad, cferris

Differential Revision: https://reviews.llvm.org/D134226


Compare: https://github.com/llvm/llvm-project/compare/3d8d9c9884db...9c26f51f5e17


More information about the All-commits mailing list