Resolving Crackling, Throttling, and "Ultmate Performance Option" in Lenovo Thinkpad P16 (Gen 2)

First, Frank, thank you! I reviewed the video that, apparently, you created for my benefit. Many thanks!

So, I reviewed the BIOS settings recommended on the Lenovo Board to get the Ultimate Power Option.

Upon review, this was already set up in my computer (based on attempting to implement the Guide recommendations). So, their initial suggestion did not do the trick. (They did suggest I check back to let them know if this worked).

I think this is very Leneovo Thinkpad P16 (Gen 2) dependent. The way they show the power options in my computer (gui) is a bit different than other computers.

Most importantly, it seems pretty clear right now all I have to do is copy and paste the Utlimate Power option text via Powershell before I open up Gig Performer and the crackling is eliminated for that session.

I have done this now about 5 times and it has worked every time. I saved a notepad with the text: powercfg -duplicatescheme e9a42b02-d5df-448d-aa00-03f14749eb61 on my desktop screen. It take me maybe 30 seconds before I start GP.

So, I am grateful this works. I have no crackling (fingers crossed).

So, I am going to just leave well enough alone unless the Lenovo Specialist gives instructions that I am very comfortable with to use on my Leneovo Thinkpad P16 (Gen 2). (I suspect they may make the same suggestion Frank showed. If so, I will cross that bridge when I get to it).

[If anything new arises, you know I’ll update you].

Thanks, again, for this great GP community.

Jeff

[PS: One additional data point: My near duplicate Lenovo Thinkpad P16 (Gen 2) does not have the crackling issue at all (without the need to user Powershell, etc.]

I don’t know about the P16, but on my Lenovo P17, the power profile is locked. I can, however, use a profile overlay. I have been using Bitsum’s ParkControl Pro for years. They replaced their high performance power profile with the High Performance Overlay.

The previous model to the P17 was the P71. It had some serious over-heating issues. Those were fixed in the P17, but Lenovo locked the power profile to keep things in an acceptable thermal range. You might find it interesting to try the Overlay. There’s a free version that you can test with. I’d be interested to know if it works for you. I’m super hesitant to muck about with the BIOS.

Bitsum ParkControl

This is from v4 that still offered the power profile (v5 now uses the overlay), but it will give you an idea of what ParkControl does.

1 Like

Thank you, John!

If I was still having crackling, I would definitely try that.

But since using Powershell each time I start up is not a big deal I may just hold off on that option for now.

Jeff

You can set the Task Scheduler to run that script automatically when you boot your computer (if you do it manually every time).

1 Like

Hmm, that’s interesting.

I’d have to figure out how to do that.

Jeff

An example: [blog] How to use multiple instances in Gig Performer 4 - #14 by npudar

FWYW, this is the latest response from the Lenovo forum (in case someone else runs into this issue).

Hi there,

Using Lenovo preinstalled image may not likely do not have this power plan, instead to install MS ISO image specific MS based option.
Power options should show Ultimate Performance create a new plan. You may check on the following links for other steps to try.
How to Enable Ultimate Performance Plan in Windows 11

Ultimate Performance Power Plan in Windows 11
Hope this helps.

No way I am going to mess with that! Hah!

I am just grateful that everything seems to work well (no crackling) if just insert the Ultimate Performance text into Powershell each time I start the laptop.

Jeff

I think you should not duplicate the scheme every time you boot Windows: just record the guid and activate that. Otherwise you clutter the registry with hundreds of ‘ultimate’ scheme duplicates.

Maybe send me the powershell script you use. I can look into it and maybe make it more defensive in this regard?

Thx, Frank, I’ll send it to you. Should be same as the GP optimization guide. But I’ll send you the exact one.

1 Like

Frank, this is it (should be the same as the GP Optimization Guide):

powercfg -duplicatescheme e9a42b02-d5df-448d-aa00-03f14749eb61

Jeff

I checked it how Windows processes this and it is what I feared: Every time you execute powercfg -duplicatescheme "e9a42b02-d5df-448d-aa00-03f14749eb61" you get an additional entry (although you can’t list it using powercfg -L). So after starting your computer 365 day you’ll end up with a possible 365 Ultimate Scheme entries. The following script will clear all redundant user defined Ultimate Schemes, but keep and activate the first. If there’s no user defined Ultimate Scheme, it will create one and activate it.

# This script makes sure there's only 1 Ultimate Scheme and activate it


$UltimateTemplate = Get-ChildItem "HKLM:\SYSTEM\CurrentControlSet\Control\Power\User\PowerSchemes\" | Where-Object{$_.PSChildName -eq "e9a42b02-d5df-448d-aa00-03f14749eb61" }
$description = ($UltimateTemplate| Get-ItemProperty -PSProperty Description).Description

$userScheme = Get-ChildItem "HKLM:\SYSTEM\CurrentControlSet\Control\Power\User\PowerSchemes\" | Where-Object{($_|Get-ItemProperty -Name Description).Description -eq $description -and $_.PSChildName -ne "e9a42b02-d5df-448d-aa00-03f14749eb61" }

if($userScheme -eq $null)
{
    # No Ultimate Scheme found
    powercfg -duplicatescheme "e9a42b02-d5df-448d-aa00-03f14749eb61"
    $userScheme = Get-ChildItem "HKLM:\SYSTEM\CurrentControlSet\Control\Power\User\PowerSchemes\" | Where-Object{($_|Get-ItemProperty -Name Description).Description -eq $description -and $_.PSChildName -ne "e9a42b02-d5df-448d-aa00-03f14749eb61" }
    powercfg -changename $userScheme[0].PSChildName "GP Ultimate"
    powercfg -setactive $userScheme[0].PSChildName
}
else
{
    # If you want to have multiple user-defined Ultimate Schemes, comment the next line
    $userScheme | ForEach-Object { if ($_  -ne $userScheme[0]) { Write-Host "Deleting $($_.PSChildName)"; powercfg -delete $_.PSChildName}}
    powercfg -setactive $userScheme[0].PSChildName
}

BTW, FYI: powercfg is not a native powershell command. It just a standard executable (like notepad.exe for example), and yes, powershell can execute (standard) executables. You could execute powercfg also in a CMD box, or using ‘run’ (Window-Key R, <command> followed by ctrl-shift + enter). //End-of-lecture :smile:

1 Like

Thanks, Frank!

As you might be able to tell, I am not too strong computer wise.

What should I do to implement this script?

Just copy and paste it into Powershell they same way I have been doing.

I guess I could see whether this “sticks”. If so, I do not have to do anything each time I start my computer.

But, if it does not “stick” (I get crackling), then I would just insert this “script” into Powershell instead of the short text I had been inserting each time?

Or maybe continue to do what I have been doing but just use this every month or so to clean it out?

Jeff

Installing the script:

  1. Open a powershell prompt.
  2. Navigate to a location where you want to save the script (using ‘cd’ and ‘c:’, ‘d:’ or whatever drive you like to save it to)
  3. Start notepad: notepad SetSafeUltimate.ps1
  4. Notepad will ask whether you want to create a new file. Yes, you want that
  5. Paste the content of the script
  6. Exit notepad and save it when it asks you to do that

You can use alternative ways to save the script, but the extension must be ‘.ps1’. Windows has the nasty habit of hiding extensionsnotepad the nasty habit of adding ‘.txt’. 2 combined leads easily to a file named SetSafeUltimate.ps1.txt and that won’t work.

Running the script:

  1. Open a powershell prompt. Make sure it’s running as ‘Administrator’
  2. Run the script file. Let’s say you saved it in d:\music\utility scripts. Then you run & 'd:\music\utility scripts\SetSafeUltimate.ps1' Because of the space in the name you have to use the quotes and the ‘&’

That should do the trick

BTW: Windows should remember the latest scheme you selected, so if you don’t change it, the script would not be needed, but to make things somewhat easier for you (hopefully), I created this script so that you don’t have to worry whether you execute it just once or a hundred times

Thanks, Frank.

I will try to research everything you mentioned (and perhaps look at Powershell on my computer) so I can (later) respond more intelligently to clarify/confirm how to proceed.

Jeff

Or, you can attach here “SetSafeUltimate.ps1” :innocent:

.ps1 is not allowed, but a zip file I apparently can do :grinning:

SetSafeUltimate.zip (679 Bytes)

1 Like

Okay, I’ll bite. If I downloaded the zip file, what what I do with that (I suspect it isn’t just going to install everything).

Please do not be offended by this, do we think inserting the code (short text I gave you) into Powershell every day is a real concern?

Jeff

You double click it, inside is the ps1 file. Move that to a location you where want it.

You can start the resulting file using a powershell prompt the way I described:

So, okay, unzip that and copy the ps1 file to wherever I want on my laptop.

Let’s say I copy it: C:\music\utility scripts

Then in the usual place I insert text into Powershell (with Administrative Privileges), I would just paste: ‘C:\music\utility scripts’

and hit enter.

By the way, I should use single quote marks ['] not double quote marks ["] ?

Jeff

Almost. The right syntax would be:

& 'C:\music\utility scripts'

Don’t forget the & otherwise powershell thinks it’s just a string and will diplay that. & means ‘execute’. Also make sure to use the ' quote and not the nice ‘’ quotes!