This is one I often see and often question about what's really going on: the idea that Task Manager is halfway broken and what it reports is inaccurate and shouldn't be trusted. Instead, trust some other program! The reason why this assertion puzzles me is that it's a system tool that Microsoft readily makes available. I'm pretty certain as well that companies, especially major hardware manufacturers, makes sure that Task Manager in Windows reports at least something resembling what they're desiring, because otherwise they'll also be the ones getting the call on "why doesn't this thing work!?!?!?!!!"
So here's a few things that I've found people commonly ask that make other people think Task Manager is broken in some way
Task Manager reports memory usage is really high, but when I add it up, it isn't anywhere near that
People often go to this page to see what their memory usage is:
And then they try do something like calculating the values in either the Processes or Details tab. Then they find that whatever number they came up with doesn't match the number in this page. The first thing to know is does show exactly what you expect: how much memory is in use. The problem is that the information in order to get to this number is hidden by default or isn't intuitive.
For example whenever someone reports that their memory usage is high but they don't have anything up, I ask them if their "Non-paged pool" is high. Normally this value doesn't get very high, but sometimes leaky drivers will start eating into it and inflate it. In one instance I've found VirtualBox also adds to this value. For some insight on what this is, the Non-paged pool is memory that should not be paged out. i.e., put on the pagefile in your storage drive. Typically system processes and programs use this space.
But otherwise, another thing people try to do is add up the values in the Processes tab:
The same thing happens: they don't get a number that's anywhere near what "In Use" in the memory page reports. This value however is the app's so-called private working set, or the data in memory that is accessible only to the app. In addition to this space, apps have a sharable memory region that can be used by other apps. This can be shared libraries or data they're willing to let some other app use. To get a value that's closer to the "In Use" value, you have to look at the working set, which can be found in the Details tab:
Note that you have show it first by right clicking on a column header, selecting "Show Columns", then checking "Working Set". I've also included "Memory (shared working set)". Adding the numbers in the "Working Set" will get you a number that's more in line of what's in use.
Task Manager doesn't show GPU usage even though I'm running a game
I covered this already in a topic:
The short of it is, Task Manager only shows four graphics, but there are actually a pletheora of categories to choose from. If you click on the header for the graph, you can change what it shows. It's very likely that the game is using something on the GPU that's triggering another graph
Task Manager can't report CPU speed properly
Another common complaint I see is Task Manager can't report the CPU speed properly. This is a little vague since there's two values Task Manager reports: Base Speed and "Speed", which is the current speed. Base speed is determined by the OS using the processor's CPUID information. The OS likely has a database of information regarding the processors it supports and so it can map CPUID information to specs. Or the CPUID may contain enough information on its own to make that determination. As an example, Intel has a table of what CPUID values map to which processor family: https://software.intel.com/en-us/articles/intel-architecture-and-processor-identification-with-cpuid-model-and-family-numbers. Also see ways to determine clock speed in Window XP/2003
"Speed" itself I'm not sure where it's getting from for certain, but it's likely taking the fastest clocked core. However, where that data is being determined is up for grabs. A very common way to do frequency counting is to peg the processor to a high performance state for a block of time while monitoring a counter on it. Then when the block of time is up, you can estimate the clock speed based on the difference between the value the counter started at an the value you end up with, divided by the time the block lasted for. Though this can be inaccurate if not handled carefully. Supposedly this is how CPUID's HWMonitor does things (https://arstechnica.com/civis/viewtopic.php?f=8&t=1370429).
Otherwise you can make a guess based on other things in the system, like monitoring what the multiplier is and using that against the base clock. But if those things aren't straight forward or the manufacturer hasn't told them a specific formula to report the clock speed correctly, then it's not really the fault of the reporting software per se.
Disk Usage is high, but read/write speeds are low!
This value is how much time the disk wasn't servicing some request. If we take a look a look at this screen shot, we can see the utilization is based on the "Active time" value
But if we go to Resource Manager and take a look at it, we see a tool tip that states "Percentage of time the disk was not idle" for Active Time:
(This is about as much as I can think of, but feel free to present other things that seem off)