Availability Group- Redo Rate displayed on AG Dashboard vs Perfmon counter
Those two numbers are measuring slightly different things.  You're right that they are both measure redo, but they do it in different ways.
The Perfmon counter is updated in near-real-time - it's the number of bytes redone in the last second:

Amount of log records redone in the last second to catch up the database replica

The AG dashboard is based on the sys.dm_hadr_database_replica_states DMV, specifically the redo_rate column:

Average Rate at which the log records are being redone on a given secondary database, in kilobytes (KB)/second.

So the AG dashboard is based on an average, but over what period?  I suspect it's &quot;the last active period&quot; based on the phrasing in the log_send_rate description from the same DMV:

Average rate at which primary replica instance sent data during last active period, in kilobytes (KB)/second.

Let's try and see.  I'll open up a lab AG dashboard, and first thing I notice is that the redo rate is not zero, despite the fact that I haven't used this thing in a couple weeks:

Perfmon is flat on the secondary, as I'm not doing anything yet:

Now I'll insert some data into my test database:
INSERT INTO dbo.A
SELECT TOP (1000)
    REPLICATE(N'A', 50)
FROM master.dbo.spt_values;

Now Perfmon on the secondary shows a brief blip:

And if I open up the AG dashboard, I can see the redo rate changed (from 3535 to 3873), but it didn't drop back down to zero:

So it looks like this DMV (and the dashboard) is only updated when redo is actually happening, and it holds the last value that it calculated.