[Bug 275594] High CPU usage by arc_prune; analysis and fix
- Go to: [ bottom of page ] [ top of archives ] [ this month ]
Date: Thu, 07 Mar 2024 15:59:57 UTC
https://bugs.freebsd.org/bugzilla/show_bug.cgi?id=275594 --- Comment #79 from Seigo Tanimura <seigo.tanimura@gmail.com> --- (In reply to mike from comment #76) Until my fix gets merged to the official source, you can keep the fix as a git branch in your local repository and build the kernel out of it. The example steps to keeping the fix along with the official source: - Local fix branch releng/14.0-topic-openzfs-arc_prune-regulation-fix-local - Official FreeBSD branch releng/14.0 - Remote name of my fix repository a130ft A) Clone the git repository and create the fix branch. Take these steps to set up the git repository. Perform them only once. 1. Clone the FreeBSD source repository. The following steps clone the FreeBSD source repository into ~/freebsd-zfs-fix-localtracking.freebsd-src. gitrepo@silver:~ % mkdir ~/freebsd-zfs-fix-localtracking gitrepo@silver:~ % pushd ~/freebsd-zfs-fix-localtracking ~/freebsd-zfs-fix-localtracking ~ gitrepo@silver:~/freebsd-zfs-fix-localtracking % git clone https://github.com/freebsd/freebsd-src.git Cloning into 'freebsd-src'... (snip) Updating files: 100% (99431/99431), done. gitrepo@silver:~/freebsd-zfs-fix-localtracking % cd freebsd-src gitrepo@silver:~/freebsd-zfs-fix-localtracking/freebsd-src % 2. Add the remote repository of my fix and create the local fix branch. The following steps add my fix repository as a remote repository and make the local fix branch. Also, the local branch tracking the official FreeBSD branch is created to make the tracking easy. gitrepo@silver:~/freebsd-zfs-fix-localtracking/freebsd-src % git remote add a130ft https://github.com/altimeter-130ft/freebsd-freebsd-src.git gitrepo@silver:~/freebsd-zfs-fix-localtracking/freebsd-src % git fetch a130ft (snip) From https://github.com/altimeter-130ft/freebsd-freebsd-src (snip) * [new branch] releng/14.0-topic-openzfs-arc_prune-regulation-fix -> a130ft/releng/14.0-topic-openzfs-arc_prune-regulation-fix (snip) gitrepo@silver:~/freebsd-zfs-fix-localtracking/freebsd-src % git branch releng/14.0 origin/releng/14.0 branch 'releng/14.0' set up to track 'origin/releng/14.0'. gitrepo@silver:~/freebsd-zfs-fix-localtracking/freebsd-src % git branch releng/14.0-topic-openzfs-arc_prune-regulation-fix-local a130ft/releng/14.0-topic-openzfs-arc_prune-regulation-fix branch 'releng/14.0-topic-openzfs-arc_prune-regulation-fix-local' set up to track 'a130ft/releng/14.0-topic-openzfs-arc_prune-regulation-fix'. gitrepo@silver:~/freebsd-zfs-fix-localtracking/freebsd-src % B) Maintain the fix branch. Perform these steps to update your local fix branch to the official FreeBSD branch after pulling it from the upstream. 3. Rebase the fix branch onto the official FreeBSD branch you want to track. gitrepo@silver:~/freebsd-zfs-fix-localtracking/freebsd-src % git pull releng/14.0 (snip) gitrepo@silver:~/freebsd-zfs-fix-localtracking/freebsd-src % git switch releng/14.0-topic-openzfs-arc_prune-regulation-fix-local Updating files: 100% (13175/13175), done. Switched to branch 'releng/14.0-topic-openzfs-arc_prune-regulation-fix-local' Your branch is up to date with 'a130ft/releng/14.0-topic-openzfs-arc_prune-regulation-fix'. gitrepo@silver:~/freebsd-zfs-fix-localtracking/freebsd-src % git log (Count and check the fix commits.) gitrepo@silver:~/freebsd-zfs-fix-localtracking/freebsd-src % git rebase -i --onto releng/14.0 releng/14.0-topic-openzfs-arc_prune-regulation-fix-local~3 releng/14.0-topic-openzfs-arc_prune-regulation-fix-local (Check the rebased commits.) (Resolve the conflicts as required.) gitrepo@silver:~/freebsd-zfs-fix-localtracking/freebsd-src % -- You are receiving this mail because: You are the assignee for the bug.