Wayback Machinekoobas.hobune.stream
May JUN Jul
Previous capture 12 Next capture
2021 2022 2023
1 capture
12 Jun 22 - 12 Jun 22
sparklines
Close Help
  • Products
  • Solutions
  • Made with Unity
  • Learning
  • Support & Services
  • Community
  • Asset Store
  • Get Unity

UNITY ACCOUNT

You need a Unity Account to shop in the Online and Asset Stores, participate in the Unity Community and manage your license portfolio. Login Create account
  • Blog
  • Forums
  • Answers
  • Evangelists
  • User Groups
  • Beta Program
  • Advisory Panel

Navigation

  • Home
  • Products
  • Solutions
  • Made with Unity
  • Learning
  • Support & Services
  • Community
    • Blog
    • Forums
    • Answers
    • Evangelists
    • User Groups
    • Beta Program
    • Advisory Panel

Unity account

You need a Unity Account to shop in the Online and Asset Stores, participate in the Unity Community and manage your license portfolio. Login Create account

Language

  • Chinese
  • Spanish
  • Japanese
  • Korean
  • Portuguese
  • Ask a question
  • Spaces
    • Default
    • Help Room
    • META
    • Moderators
    • Topics
    • Questions
    • Users
    • Badges
  • Home /
avatar image
11
Question by rlbaldi · Mar 22, 2010 at 12:35 PM · optimizationprofileroverhead

What does Overhead stands for?

I'm seeing an Overhead function inside profiler window. What is the meaning of that? Why it's so time consuming? Why it's not documented at all?

Screenshot

Comment
Add comment
10 |3000 characters needed characters left characters exceeded
▼
  • Viewable by all users
  • Viewable by moderators
  • Viewable by moderators and the original poster
  • Advanced visibility
Viewable by all users

3 Replies

· Add your reply
  • Sort: 
avatar image
9
Best Answer

Answer by David-Berger · Sep 01, 2014 at 01:40 PM

The information below is now moved to the official knowledge base article: https://support.unity3d.com/hc/en-us/articles/208167236 it will be updated regularly in the knowledge base so make sure to visit it as well if you are interested in what Overhead stands for.

Outdated information below:

The Overhead presents usually vsync. especially on iOS where you can not turn of vsync. Profiling overhead might be included too, but usually it isn't that big (for actual builds), also if you are GPU bound, then it might appear as overhead, but more often you will see it under Camera.Present.

Short Overview: The Overhead presents usually vsync. especially on iOS where you can not turn of vsync. Profiling overhead might be included too, but usually it isn't that big (for actual builds), also if you are GPU bound, then it might appear as overhead, but more often you will see it under Camera.Present. 9ms might be perfectly fine for vsync.

  • In the Profiler, the Overhead is the total frame time minus the duration of everything else that is actively measured.

  • It's usually related to the internal processing of the scene. The complexer the scene, the more Overhead it will produce.

  • It also accounts for the vertical synchronization, that can be set to a fixed duration with Application.targetFrameRate.

  • Issues that could cause Overhead spikes are Memory warnings - When iOS throws memory warnings that increases the app Overhead. Thus when the iOS player constantly crosses the memory warning line, that will cause lots of large Overhead spikes. Use Instruments Activity Monitor to visualize these warnings as flags on top of the timeline.

The complexity of the scene doesn't refer directly to the amount of objects that compose it, but to the processing in general. If you have lots of objects, processing all of them will take more time than just a few. But more important the different engine subsystem tasks on those objects (in this case, tasks that are not being actively measured in the Profiler) will be added to this complexity increasing the Overhead. Depending on the work performed this increase could be significative or not. So it's not possible for us to provide statistics on the complexity of the scene, it depends on many factors.

The Profiler's hierarchy is populated with the processes that most probably will consume important resources, but there will still remain lots of hidden tasks. In order to find what is adding more complexity or processing to the scene, you could remove or change "aspects" of the scene, one by one, then profile and see how that affects the Overhead. With aspects I mean groups of objects that are processed by some subsystem, i.e. 3D or 2D physics, navmesh, sprites, lighting, scripts and plugins, rendering, GUI, audio or video, particles, etc. The aspects could include settings used by the subsystems. You might find one of these is considerably affecting the performance, and then you can optimize it.

You can also check your project against some of these general performance tips/considerations that our Support team has compiled, and that might help reducing the Overhead as well:

  • FPS is determined by CPU and GPU usage.

  • CPU : Physics, Game code, Skinning (when not done in GPU), Particles, Raycasting (Flares)

  • GPU : Fillrate, Shaders, Drawcalls, Image Effects. Garbage Collection.

  • Remove all empty event callbacks (OnGUI, LateUpdate, Update, etc) from scripts.

  • Increase the fixedTimeStep (Physics timestep) to reduce the number of time physics simulation is updated.

  • Set the Maximum Allowed Timestep in the Time manager to cap the time spent on physics in the worst case scenario.

  • All static moving objects must remain static in the game. If you need to alter them in any way (change size, position, orientation, disable/enable) you should make them Kinematic * Rigibodies.

  • For each Flare in your scene Unity performs a Raycast from the Camera position. Make sure only the Flares that should be active are enabled in the scene.

  • Remove all unneeded curves (e.g A curve with a constant scale of 1,1,1.) and redundant keyframes from your AnimationClips.

  • Use QualitySettings to match the hardware of the device. Try reducing Anti Aliasing, reducing the Shadow distance, and changing the max LOD values.

  • Uncompressed AudioClips require less CPU for playback. Use this setting for small clips that don't use too much space in memory.

  • Use HashSet instead of Lists if you need to use Find or Contains every frame. It is a data structure designed for quick searching.

  • Cache references instead of performing unnecessary searches.

  • Avoid using multiple cameras if possible. Having a second camera will unfortunately have the implication that the culler has to process the scene twice - even if you set a different * layer for one of the cameras.

  • Use ParticleSystems for rendering sprites and billboards (e.g grass)

  • If you are need to constantly modify a mesh, make sure to call MarkDynamic() on the mesh to allow Unity to optimize the mesh for frequent changes.

  • Reduce memory allocations to reduce GC hiccups. Use the GC Alloc column in the Profiler to find code allocating memory.

  • Using object pooling for ephemeral objects is faster than creating and destroying them, because it makes memory allocation simpler and removes dynamic memory allocation * overhead (mono needs to look at the state of the memory to allocate) and Garbage Collection, or GC.

  • Use System.RuntimeMethodHandle.GetFunctionPointer to pre-jit functions.

  • If you have a scaled meshcollider the mesh collider will be baked on the main thread which can stall your game. Avoid doing that. (4.0)

  • AwakeFromLoad can be very expensive and stall the main thread.

Comment
Add comment · Show 2 · Share
10 |3000 characters needed characters left characters exceeded
▼
  • Viewable by all users
  • Viewable by moderators
  • Viewable by moderators and the original poster
  • Advanced visibility
Viewable by all users
avatar image hitarthdoc1994 · Mar 29, 2016 at 12:22 PM 0
Share

@$$anonymous$$ Berger I'm Confused does higher Overhead mean better game Performance in the Build?

I read in some posts that greater Overhead means a better performance in the Final Build as the Profile and the Editor contribute to the Overhead.

I also could not understand the Following point you stated: "In the Profiler, the Overhead is the total frame time $$anonymous$$us the duration of everything else that is actively measured."

Please Help and sorry for the silly Question as I'm still a noob.

Thank You.

avatar image David-Berger ♦♦ hitarthdoc1994 · Apr 05, 2016 at 02:47 PM 0
Share

Higher Overhead does NOT mean better game Performance in the Build? The performance might be better as the overhead measurement of the Editor and Profiler are not added, but if you have high overhead the performance of your game will likely be in not a very good shape as well.

However, you should never measure your performance with the game running in the editor. Always measure the performance of a standalone build.

Let's assume you have a total update time of 17ms. Further, it takes 16ms to update and render (everything which is actively measured). 17-16 = 1ms = Overhead, which might be used for profiling physics, rendering and audio or even to vsync on different platforms (iOS/XBox ect.).

avatar image
2

Answer by TheCheese · Jan 03, 2013 at 10:19 PM

In my experience a lot of overhead is created in the profiler when your scene window is open in the editor while profiling your game.

Simply closing / hiding the scene window should make most of that "overhead" disappear.

Comment
Add comment · Show 1 · Share
10 |3000 characters needed characters left characters exceeded
▼
  • Viewable by all users
  • Viewable by moderators
  • Viewable by moderators and the original poster
  • Advanced visibility
Viewable by all users
avatar image entity476 · Oct 31, 2014 at 12:30 PM 0
Share

$$anonymous$$aybe other answers I've read imply the same within their context, but yours offers the most direct solution/explanation.

avatar image
1
Wiki

Answer by qJake · Mar 22, 2010 at 09:18 PM

http://en.wikipedia.org/wiki/Computational_overhead

It's related to efficiency and the speed at which resources are computed. Typically this is a direct result of how "efficient" you have coded your game, and whether or not you've used good coding practices and efficient designs.

Comment
Add comment · Show 4 · Share
10 |3000 characters needed characters left characters exceeded
▼
  • Viewable by all users
  • Viewable by moderators
  • Viewable by moderators and the original poster
  • Advanced visibility
Viewable by all users
avatar image rlbaldi · Mar 22, 2010 at 09:44 PM 3
Share

$$anonymous$$y question is, what is the meaning of that inside Unity? I mean, why this function appears on Profiler even when I have an empty project? Is it related to Unity's internal execution? If so, can't it be described as "UnityInternals"?

avatar image qJake · Mar 23, 2010 at 06:16 AM 0
Share

Yes, it's related to the basic inner workings of Unity. Things like setting up the game world, initializing components and running the game loop (even though it's largely empty). You shouldn't worry too much about this value... think of it like the basic, barebones required amount of power that Unity needs to run on the system.

avatar image liortal · Jun 22, 2014 at 09:43 AM 0
Share

I wonder how this answer got accepted

avatar image meat5000 ♦ · Jun 22, 2014 at 10:26 AM 1
Share

It has a +1, the other answer doesn't.

Perhaps someone would be willing to provide a fuller answer.

As far as I see, Overhead in Unity is the computation required for the editor itself and the computation required to set up the basic container.

You have a basic class, it's empty except for Update(), which is present but empty.

The system still needs to process this class and will still execute Update() whether there is anything in it or not.

This is overhead. Its the processing that is required before your actual functionality is processed.

I'm not sure how right this is but Unity has a habit of processing script that are not even used. I'd personally count that as Overhead too.

Your answer

Hint: You can notify a user about this post by typing @username

Up to 2 attachments (including images) can be used with a maximum of 524.3 kB each and 1.0 MB total.

Follow this Question

Answers Answers and Comments

3 People are following this question.

avatar image avatar image avatar image

Related Questions

Unity profiler Gfx.WaitForPresentOnGfxThread 2 Answers

Andriod (Oculus Quest 2 app) locked at 30 fps 1 Answer

UI Text Optimization? Updating Geometry seems to be slow 0 Answers

Check what's subtracting FPS? 1 Answer

What does "other" in the Profiler Stand for? 4 Answers


Enterprise
Social Q&A

Social
Subscribe on YouTube social-youtube Follow on LinkedIn social-linkedin Follow on Twitter social-twitter Follow on Facebook social-facebook Follow on Instagram social-instagram

Footer

  • Purchase
    • Products
    • Subscription
    • Asset Store
    • Unity Gear
    • Resellers
  • Education
    • Students
    • Educators
    • Certification
    • Learn
    • Center of Excellence
  • Download
    • Unity
    • Beta Program
  • Unity Labs
    • Labs
    • Publications
  • Resources
    • Learn platform
    • Community
    • Documentation
    • Unity QA
    • FAQ
    • Services Status
    • Connect
  • About Unity
    • About Us
    • Blog
    • Events
    • Careers
    • Contact
    • Press
    • Partners
    • Affiliates
    • Security
Copyright © 2020 Unity Technologies
  • Legal
  • Privacy Policy
  • Cookies
  • Do Not Sell My Personal Information
  • Cookies Settings
"Unity", Unity logos, and other Unity trademarks are trademarks or registered trademarks of Unity Technologies or its affiliates in the U.S. and elsewhere (more info here). Other names or brands are trademarks of their respective owners.
  • Anonymous
  • Sign in
  • Create
  • Ask a question
  • Spaces
  • Default
  • Help Room
  • META
  • Moderators
  • Explore
  • Topics
  • Questions
  • Users
  • Badges