') + ')', 'gi'); if (regex.test(text)) { found = true; var frag = document.createDocumentFragment(); var parts = text.split(regex); parts.forEach(function(part, i) { if (i % 2 === 0) { frag.appendChild(document.createTextNode(part)); } else { var span = document.createElement('span'); span.className = 'userscript-highlight'; span.textContent = part; frag.appendChild(span); } }); node.parentNode.replaceChild(frag, node); } }); } else if (node.nodeType === 1 && node.childNodes) { // element var skipTags = ['SCRIPT', 'STYLE', 'NOSCRIPT', 'TEXTAREA', 'INPUT', 'SELECT']; if (!skipTags.includes(node.tagName)) { Array.from(node.childNodes).forEach(highlight); } } } highlight(document.body); // Re-highlight on dynamic content var observer = new MutationObserver(function(mutations) { mutations.forEach(function(m) { m.addedNodes.forEach(function(node) { if (node.nodeType === 1 || node.nodeType === 3) highlight(node); }); }); }); observer.observe(document.body, { childList: true, subtree: true }); })(); } } catch(__e) { console.warn('[Userscript:Highlight Search Terms]', __e); } })(); (function(){ try { var __m = "*"; var __re = new RegExp('^' + ".*" + ', 'i'); if (__m === '*' || __re.test(location.href)) { // Strip utm_, fbclid, gclid, etc. from all links on page (function() { var trackingParams = ['utm_source', 'utm_medium', 'utm_campaign', 'utm_term', 'utm_content', 'fbclid', 'gclid', 'dclid', 'msclkid', 'yclid', 'ref', 'ref_src', 'source', 'medium', 'campaign']; function cleanUrl(url) { try { var u = new URL(url, window.location.origin); var changed = false; trackingParams.forEach(function(p) { if (u.searchParams.has(p)) { u.searchParams.delete(p); changed = true; } }); return changed ? u.toString() : url; } catch (e) { return url; } } function cleanLinks() { document.querySelectorAll('a[href]').forEach(function(a) { var clean = cleanUrl(a.href); if (clean !== a.href) a.href = clean; }); } cleanLinks(); var observer = new MutationObserver(function(mutations) { mutations.forEach(function(m) { m.addedNodes.forEach(function(node) { if (node.nodeType === 1) { if (node.tagName === 'A') cleanLinks(); node.querySelectorAll('a[href]').forEach(function(a) { var clean = cleanUrl(a.href); if (clean !== a.href) a.href = clean; }); } }); }); }); observer.observe(document.body, { childList: true, subtree: true }); })(); } } catch(__e) { console.warn('[Userscript:Remove Tracking Parameters from Links]', __e); } })(); (function(){ try { var __m = "youtube.com"; var __re = new RegExp('^' + "youtube\\.com" + ', 'i'); if (__m === '*' || __re.test(location.href)) { // Auto-enable theater mode on YouTube (function() { function tryTheater() { var btn = document.querySelector('button[aria-label="Theater mode"], ytd-player #player button[title="Theater mode"]'); if (btn && !btn.classList.contains('activated')) { btn.click(); } } // Try immediately tryTheater(); // Try after navigation (SPA) var lastUrl = location.href; setInterval(function() { if (location.href !== lastUrl) { lastUrl = location.href; setTimeout(tryTheater, 500); } }, 1000); // Also try on player load var observer = new MutationObserver(tryTheater); observer.observe(document.body, { childList: true, subtree: true }); })(); } } catch(__e) { console.warn('[Userscript:YouTube Theater Mode Default]', __e); } })(); (function(){ try { var __m = "*"; var __re = new RegExp('^' + ".*" + ', 'i'); if (__m === '*' || __re.test(location.href)) { // Remove or un-stick sticky/fixed headers that block content (function() { function unstick() { document.querySelectorAll('header, nav, [role="banner"], .header, .navbar, .sticky, .fixed-top, [style*="position: fixed"], [style*="position:sticky"]').forEach(function(el) { if (el.style.position === 'fixed' || el.style.position === 'sticky' || getComputedStyle(el).position === 'fixed' || getComputedStyle(el).position === 'sticky') { el.style.position = 'static'; el.style.top = 'auto'; el.style.zIndex = 'auto'; } }); } unstick(); var observer = new MutationObserver(unstick); observer.observe(document.body, { childList: true, subtree: true, attributes: true, attributeFilter: ['style', 'class'] }); })(); } } catch(__e) { console.warn('[Userscript:Kill Sticky Headers]', __e); } })(); })(); [release/7.0] createdump: only dump committed memory by github-actions[bot] · Pull Request #79983 · dotnet/runtime · GitHub
Skip to content

[release/7.0] createdump: only dump committed memory - #79983

Closed
github-actions[bot] wants to merge 4 commits into
release/7.0-stagingfrom
backport/pr-79853-to-release/7.0
Closed

[release/7.0] createdump: only dump committed memory#79983
github-actions[bot] wants to merge 4 commits into
release/7.0-stagingfrom
backport/pr-79853-to-release/7.0

Conversation

@github-actions

@github-actionsgithub-actionsBot commented Dec 27, 2022

Copy link
Copy Markdown
Contributor

Backport of #79853 to release/7.0, issue #71472

Creating a dump against some kernel implementations is committing empty pages with the page probing technique we currently use during memory enumeration. This change uses the pagemap API's in the /proc system if it's available along with the maps api to decide what pages contain relevant information. This results in smaller dumps and no increase in resident memory usage.

/cc @hoyosjs@ezsilmar

Customer Impact

Customers have reported memory doubling in processes they dump. This is fatal environments such as K8s and cgroups hosting, where the process of collecting a dump often results of a OOM kill. This makes crash and ad-hoc diagnostics harder than needs be.

Testing

TBD

Risk

Low - fallback to prior code paths is enabled. Also, it's possible to explicitly disable the new behavior by setting the env var DOTNET_DbgDisablePagemapUse to 1.

@ghost

Copy link
Copy Markdown

Tagging subscribers to this area: @tommcdon
See info in area-owners.md if you want to be subscribed.

Issue Details

Backport of #79853 to release/7.0

/cc @hoyosjs@ezsilmar

Customer Impact

Testing

Risk

IMPORTANT: Is this backport for a servicing release? If so and this change touches code that ships in a NuGet package, please make certain that you have added any necessary package authoring and gotten it explicitly reviewed.

Author:github-actions[bot]
Assignees:-
Labels:

area-Diagnostics-coreclr

Milestone:-

@hoyosjshoyosjs added the Servicing-consider Issue for next servicing release review label Dec 27, 2022
@hoyosjshoyosjs added this to the 7.0.x milestone Dec 27, 2022
@hoyosjs
hoyosjsforce-pushed the backport/pr-79853-to-release/7.0 branch from 90b2ffd to 40cb952CompareDecember 28, 2022 01:42
@jeffschwMSFTjeffschwMSFT removed the Servicing-consider Issue for next servicing release review label Jan 3, 2023
@mikem8361mikem8361 self-assigned this Jan 3, 2023
@jeffschwMSFTjeffschwMSFT added the Servicing-consider Issue for next servicing release review label Jan 3, 2023

@jeffschwMSFTjeffschwMSFT left a comment

Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

approved. we will take for consideration in 7.0.x

@hoyosjshoyosjs added the NO-MERGE The PR is not ready for merge yet (see discussion for detailed reasons) label Jan 5, 2023
@jeffschwMSFTjeffschwMSFT removed the Servicing-consider Issue for next servicing release review label Jan 10, 2023
@hoyosjs
hoyosjs marked this pull request as draft January 12, 2023 23:27
ezsilmarand others added 4 commits February 10, 2023 14:26
Dumping memory regions as they are listed in /proc/pid/maps
results in increase of RAM usage of the target application
on some Linux kernels.
This change uses /proc/pid/pagemap to check if the page is committed
before adding it to the regions list. As the file is not available on
kernels 4.0 and 4.1 without elevated permissions there's a fallback to
previous behavior.
@carlossanlop
carlossanlopforce-pushed the backport/pr-79853-to-release/7.0 branch from 40cb952 to 36b5626CompareFebruary 10, 2023 22:26
@carlossanlop

Copy link
Copy Markdown
Contributor

This is still marked as no-merge. Friendly reminder that the servicing branches open today.

@carlossanlop

Copy link
Copy Markdown
Contributor

I'm retargeting this PR to the new release/7.0-staging branch, which is the one that we will use from now on for servicing fixes.

Repo maintainers will now be allowed to merge their own servicing PR as long as it meets the requirements:

  • It is appoved by Tactics (signaled by adding the Servicing-approved label).
  • It's signed-off by an area owner.
  • The CI is green, or the failures are investigated as unrelated.
  • And if the PR touches an OOB package, the necessary OOB authoring changes are added.

The new process is described here: runtime/docs/project/library-servicing.md.

The infra team will be actively monitoring servicing PRs to ensure all requirements are met and to help with any issues.

Let me know if you have any questions.

@carlossanlop
carlossanlop changed the base branch from release/7.0 to release/7.0-stagingMarch 28, 2023 20:54
@jkotas
jkotas deleted the backport/pr-79853-to-release/7.0 branch April 18, 2023 22:46
@ghostghost locked as resolved and limited conversation to collaborators May 19, 2023
Sign up for freeto subscribe to this conversation on GitHub. Already have an account? Sign in.

Labels

area-Diagnostics-coreclrNO-MERGEThe PR is not ready for merge yet (see discussion for detailed reasons)

Projects

None yet

Development

Successfully merging this pull request may close these issues.

5 participants

@carlossanlop@jeffschwMSFT@mikem8361@hoyosjs@ezsilmar