Subobjects with owners in iris get polled all the time

I’m working on moving us to Iris. I noticed we had several sub-objects that were getting polled despite being entirely push model based, you can see the results in the profile, things being polled and immediately returned.

[Image Removed]

I asked around and was directed towards, BuildPollList. I’ve made a change in our local copy to first check if the sub-object wants to be dormant before including them. Id like to get someone on the Iris team to review this is let me know if there’s more I need to do, or if this is a terrible idea for some unknown reason, https://github.com/EpicGames/UnrealEngine/pull/13287.

Hi Nick,

Subobjects does not have a concept of dormancy on their own and always follows the root object.

Marking a subobject dirty will also dirty the root and vice versa to ensure consistency when polling.

That said, I am currently actively working on optimizing the polling logic to fully utilize per property dirtiness and also avoid polling fully pushedbased objects and subobjects that are not marked dirty.

I expect those changes to reach UE5-Main in a week or two which will reduce polling time significantly.

Best regards

Mattias

That’s fantastic, if it’s not a big deal can you update this UDN when it hits main?

Yes, I will post an update once it is in!

Hi Nick,

I have now submitted the optimizations for push based polling. They are available on UE5-Main as of CL 43176094.

With it push based properties will only be polled if they are marked dirty.

Fully push based objects will be skipped entirely if not marked dirty.

The change also adds a cvar to enable verbose profiling that includes every polled property making it easy to track down and find why objects gets polled.

We are also experimenting with enabling task based polling allowing polling to be executed concurrently.

Best regards

Mattias

Awesome thanks Mattias

subobjects follow the root for dormancy, so a fully push based child still gets visited when the parent polls. the profile then shows rapid poll and return with no data moved.

keep push model dirty flags tight on the parent and move rarely changing child state into COND groups or net groups that can stay clean. the 5.6 polling optimization for fully push based objects reduces this, so compare the same profile after pulling that changelist.

you can also look at Iris Readiness Kit, an Iris replication plugin that reports polling and push model gaps that waste server time under Iris before activation: Iris Readiness Kit — Audit Your Project Before Enabling Iris Replication | Fab there’s a shorts playlist on iris filtering basics too: https://www.youtube.com/playlist?list=PLWrCzz951TwA