Page MenuHomeFeedback Tracker

diag_log executes and performs write IO within render thread causing simulation/render blocking
Acknowledged, WishlistPublic

Description

diag_log currently blocks the render/simulation step to perform the actual write IO. This means that excessive RPT writting, for example the recent PhysX RPT spam issue; causes massive FPS loss in both client and dedicated server scenarios.

This FPS loss is due to the fact that diag_log blocking writes to the RPT in sequential order.

Recommendation:
This should be moved off to its own processing thread. All diag_log calls should simply add a log message to a log queue; this queue should then be processed by a seperate logging thread, which exclusive performs write IO to the logging files.

I recommend this be moved to for all logging functionality, as IO is expensive and will cause blocking of simulation frames all over the place.

Details

Legacy ID
3269962352
Severity
None
Resolution
Open
Reproducibility
Always
Category
Performance
Steps To Reproduce

do anything in the arma series ever. Physx Overflow logging is the current beast for this.

Alternatively, perform a tight loop of diag_log messages:

while { true } do { diag_log text format["HI!"]; }; And watch the client/server FPS drop excessively. For added fun, do these in onEachFrame.

Event Timeline

jaynus edited Steps To Reproduce. (Show Details)Feb 12 2015, 6:43 PM
jaynus edited Additional Information. (Show Details)
jaynus set Category to Performance.
jaynus set Reproducibility to Always.
jaynus set Severity to None.
jaynus set Resolution to Open.
jaynus set Legacy ID to 3269962352.May 7 2016, 8:16 PM
jaynus edited a custom field.