Jump to content

CommandMan7

Member
  • Posts

    1,102
  • Joined

  • Last visited

Reputation Activity

  1. Informative
    CommandMan7 reacted to Mira Yurizaki for a blog entry, Process for gathering video card data when analyzing application behavior   
    Since I've been doing some tests lately involving how applications use the video card, I thought I'd write down the process of gathering this data and presenting it. After all, any sufficiently "scientific" test should be repeatable by others, and being repeatable means knowing what to do!
     
    What data am I gathering?
    CPU Utilization
    This is to see how the CPU is being used by the application. The higher the usage overall, the more likely it is to bottleneck the GPU. I may omit this altogether if I'm not interested in CPU utilization. GPU engine usage
    A "GPU engine" is something that Microsoft calls a part of the GPU that handles a certain task. Which engines are available depends on the GPU manufacturer. The two I'm primarily interested in are the graphics and compute engines, because these two will show how the execution portions of the GPU are being used by the application. This can only be used for informational purposes, i.e., there is no "lower/higher is better" value. VRAM usage
    Since Windows Vista, Microsoft implemented virtual memory on a system level. This allows me to look at three elements: Committed VRAM (how much was requested to be reserved), Dedicated VRAM usage (how much is used on the video card itself), and Shared VRAM usage (which is VRAM usage in system memory). Like GPU engine usage, this can only be used for informational purposes. Frame Time
    This is the amount of time between frames. As long as VSync or frame limiting is not used, this should represent how long it took to render the frame. The inverse of this is what I call "instantaneous FPS," which is the time between the current and last frame normalized over a second. I call this "instantaneous" since FPS would require counting all of the frames in a second. What data am I not gathering?
    I'm not looking at temperatures, clock speeds, and fan speeds. These are aspects of hardware that don't reflect how the application is using it.
     
    What tools am I using?
    Performance Monitor (PerfMon)
    PerfMon gathers CPU utilization, GPU engine usage, and VRAM usage. Other tools like GPU-Z and MSI Afterburner cannot gather this data, at least with respect to the specific aspects I'm looking for. The other thing is that PerfMon can gather data per-application. Meaning the data I gather is specifically from the application in question, rather than on a system wide level. FRAPS
    While FRAPS is old (the last update was in 2013) and the overlay no longer seems to work in DX12 applications, its benchmark functionality still works. This allows me to gather data about frame times. Note that FRAPS counts a frame as when one of the display buffers flips. This poses a limitation when VSync is enabled but the application is not triple buffered or when frame rate limiting is used. How do I use these tools?
    PerfMon takes some setting up:
    Open it by going to Control Panel -> All items -> Administrative Tools -> Performance Monitor. Open it as an Administrator, otherwise you won't be able to do the other steps. Select "Data Collector Sets" in the left pane Right click  "User Defined" in the right pane and select New -> Data Collector Set In the wizard that pops up, name the Data Collector Set, choose "Create manually (Advanced)" In the next page, select "Create data logs" and check off "Performance counter" In the next page, click on the "Add..." button, the select the following: GPU Engine -> Utilization for All Instances GPU Memory -> Committed, Dedicated, and Shared memory for All Instances If doing CPU utilization, select Processor -> "% Processor Time" for All Instances The next page will ask where you want to save these logs When you want to start the data collection, select the one you created and on the tool bar on the top, press the green triangle. To stop collecting data, press the black square. Note: PerfMon gathers GPU data by the apps using the GPU that are currently running when the collection starts. If the app isn't running and you start data collecting, it won't gather data for that app. To open the log, go to where you said to save the data and double click on it. The data collected for each app is by process ID. Unless you figured this out ahead of time, the best way I've found to find it is to plot all of the 3D or graphics engines and see which one looks like the process ID of the app. Then I sort by name, then remove the data from the other process IDs. Once the data has been filtered, right click on the graph and select "Save Data" Save it as a "Text File - Comma Separated Values (CSV)" Once you have the data in a CSV format, you should be able to manipulate this data using spreadsheet apps like Microsoft Excel or Open/Libre Office Calc.
     
    FRAPS requires pressing F11, or whatever the benchmark hotkey is, to start then pressing it again to stop. FRAPS saves the data as CSV. The items of interest are frame times and MinMaxAvg data. Frame times do require additional work as FRAPS records the timestamp in milliseconds from the start of the run rather than the time between frames.
     
    What other tools did I consider and why weren't they used?
    EVGA Precision X
    Polls system wide stats. Also, while it it has a frame rate counter, it samples it over the period which can mask hiccups (and it's likely based on the inverse of FPS). While higher sampling rates can be used, I noticed this adds a significant use to the GPU. GPU-Z
    Polls system wide stats. MSI Afterburner
    Polls system wide stats. May also have the same issues as EVGA Precision X.
  2. Agree
    CommandMan7 reacted to Mira Yurizaki for a blog entry, Think beyond computer problem solutions than just knowing them   
    Fixing computers is always a satisfying thing. Especially after chugging away at it for hours or even days. And when you come across the solution, you tuck it away in your memory, notebook, or what have you so the next time the problem shows up, you can fix it again. But I don't think that's enough to really "master" the computer.
     
    I'm having a feeling that a lot of people who are beyond beginners accumulate solutions to problems or at least know how to find them online and simply spout out the solution. While this is fine for minor problems, more involved issues tend also seem to get little more than a glance as to understanding why something is happening in the first place. I find this detrimental and growth stunting in some ways.
     
    Since it came up recently, I saw yet another reply in a thread where the OP mentioned cloning drives and the reply was "just reinstall Windows, you'll have problems if you clone." The last time I had any care about trying to talk to these people, I was linked to an article to someone who cloned it and shared their nightmare story about things were broken, but they just reinstalled Windows and everything was fine. It makes me wonder... have these people actually cloned their OSes or are they just spouting rhetoric that someone else wrote? Because I'm looking at myself going "I've cloned a half dozen times, none of them had issues." And then there's the fact that cloning is a popular way for mass deployment of a system. It's simply much faster to copy the data over to a new drive than it is to go through the setup process.
     
    Without poking at the solution presented, it breeds misinformation that spreads. I did do a somewhat haphazard test of cloning an OS and used it, and my research only led to one thing that might possibly be it and it's caused by something someone would likely do. But if the solution to cloning is "don't do it, reinstall Windows because cloning causes issues" and the person can't explain why, then I don't think whoever says that doesn't understand the nature of the problem or the solution. They don't have to go down the specific details like "oh because xxx driver is dumb and hard codes where it lives" or "yyy setting affects zzz thing that's dependent on aaa thing", but something that at least makes sense.
     
    Why is this important? Because establishing a root cause is helpful to knowing if the same problem happens again and you try the same solution you always have but it doesn't work, you can try a solution that's related.
     
    One example of this is when people report their RAM usage is very high, but when they add up the amount of RAM their apps are taking up, it's much less. Like Task Manager reports 15/16GB is used, but the apps only use up 3GB. People often go "you might have a virus" (possible) or "something is wrong with RAM" (also possible). However, when I see this problem, I ask OP "Can you check if your non-paged pool is high?" Why? At first when I looked into this issue, the one thing that popped up a lot was that the Killer NIC driver's were leaking, and this causes the non-paged pool to increase in use. And so far most of the time when someone reports this, they're using a Killer NIC, so a driver update usually solves their problem. The root cause might be "Killer NIC drivers leak memory, causing the non-paged pool to increase." But then I dug around with what the non-paged pool is: it's kernel space memory that can't be paged out. So it's possible the poorly written drivers of any sort can do this. So the solution in general isn't just "If you have a Killer NIC, update the driver", it's "update your drivers if you haven't, one of them may be leaking and the update may have fixed it". I also found out after some random testing that VMs usually use the kernel memory space, which may also cause a situation like this to happen.
     
    In another example, I work for a company that does system critical software. That is, this software needs to be reliable as failing can mean serious injury or death to those operating the machinery that software controls or to others that happen to be around it. When a problem comes up and it's severe, we investigate the hell out of it to find root cause. We do not like solutions that work but we don't know the "why." We still implement and post the solution, but it's not very helpful if we don't know what caused it. Because if it happened once, it'll happen again, and the solution may not be a complete solution, it may just lessen the severity of the consequences. And if we know the root cause to that problem, it may start lighting bulbs in our heads that the issue may have led to other problems.
     
    So the next time you come across a complicated problem and solve it, try to figure out why that problem happened in the first place. You never know, it may allow you to fix your computer without consulting Google.
  3. Informative
    CommandMan7 reacted to Mira Yurizaki for a blog entry, Project Dolly: A look into cloning Windows (Conclusions)   
    It's earlier than I'd said I would report this but for reasons I'm choosing to wrap up this experiment.
     
    In day-to-day usage, I still haven't ran into any problems. Granted I did not play any games on the laptop, but I did run 3DMark after the cloning. However supposedly people do have issues regardless if they game or not. I also may not have been exactly representative of the use case, since I didn't clone after say a year of use. Though I can't think of anything that would cause issues since the only thing that should grow barring the installation of other programs is the Users folder and possibly ProgramData.
     
    There was one other problem I forgot to mention in my last entry since it slipped my mind: the hard drive was offline when I first booted into the SSD. This means Windows knows the drive existed, but it didn't mount it. i.e., it wasn't accessible. I found an article explaining why this was though: http://www.multibooters.com/tutorials/resolve-a-disk-signature-collision.html. Windows has what is called disk signatures, which originally was meant to help the OS configure a software RAID setup. The disk signatures are supposed to be unique, but sometimes cloning software will copy this over. When that happens, Windows will take the other drive(s) with the same signature offline. You can put them back online, however, Windows will reassign a new signature to that drive. However, this is only a problem for that disk. So if you planned on booting into it again, you'll have issues.
     
    The article claims that cloning tools used to either give you a choice in the matter of keeping or assigning new disk signatures. But now they automatically assign new signatures and change the configurations so Windows doesn't freak out.
     
    So yes, there is some grain of truth that if you clone, Windows will run into issues because it's expecting one set of disk signatures and you've changed them. However, this appears to be a combination of the cloning tool and what the user did. Like for example in my case, since Samsung's cloning tool copied the hard drive basically verbatim, if I accessed the SSD right after cloning the hard drive (which is very likely if the person wants to do a soft verification of the clone), it would've changed the disk signature and I would've had issues. But since I booted into the SSD instead, I changed nothing. I'd imagine since few people know about disk signatures and if this was the root cause of their problems, this is why they think the act of cloning itself causes issues.
     
    I used to clone via creating a bootloader partition, cloning C:\ onto the new drive with Partition Wizard (or Magic, I forget which), then making a bootloader on the drive. So disk signatures weren't really an issue for me with this method. However this hasn't been working for some reason or another and I don't really have a reason to clone drives these days so I never figured out why.
     
    My conclusions on the matter:
    Cloning is more or less a safe thing to do. You should use the tool from manufacturer of the drive you're cloning tool if they have one. If the manufacturer does not have a tool, get a program that is advertised to do so like Macrium Reflect or Arconis True Image. After cloning do not try to access the drive. Do a verification by booting into it. If you do not see the original drive after booting into the new one, do not try to access it until you're satisfied with the cloned drive.
  4. Like
    CommandMan7 reacted to Mira Yurizaki for a blog entry, Project Dolly: A look into cloning Windows (Planning)   
    I'll admit something. If there's one topic I typically stay away from because it seems like everyone has a consensus on the subject, it's cloning Windows installations from an HDD to an SSD. The consensus is it's always better to just reinstall the OS. While there are some practical reasons, the most common ones I've heard to avoid cloning is because you'll encounter a plethora of issues. I've found this puzzling considering:
    I've cloned multiple times with no ill effect I don't understand how there could be system software issues if the only thing that's changed is the hard drive. That's like saying if you upgrade your video card, reinstall Windows otherwise it'll freak out that it has a new video card. And as far as I understand about modern computer architectures, storage drives are basically virtualized and abstracted to the point where a storage drive is a storage drive. Well, the software still has to know how to talk to it, but as far its concerned, from an operational point of view there is no difference between a Samsung SSD, a Hitachi HDD, or a CF card talking over a SATA converter.
     
    So I'm going to do a cloning project with my secondary computer, my Dell Inspiron 15 7559. It has a Samsung EVO 850 M.2 SSD and a Seagate SSHD. The plan is going to be like so:
    Install Windows on the HDD Make note of storage related services that Windows enabled. Notably check to see if Superfetch is enabled and if the drive is marked for defrag scheduling Install all of the drivers and programs I normally would've used on it. If I have importable settings from my primary computer, like from Firefox, then I'll import those. I'll install a few games on it. It won't be used much for gaming though when/if I do game on it. Give it a day or so to "settle" after running a few tests. Use Samsung's software to clone the HDD install over to the SSD Verify the SSD boot works, then wipe the HDD Check to see if the following has changed Superfetch (should be disabled) Defrag schedule (drive should not be available or is unchecked) TRIM is enabled If the above has not changed, continue on anyway, but make note of it Use the laptop for a few weeks Will mostly be doing light loads and maybe the occasional gaming if it's not too hard on the poor 960M Will also monitor any issues that come up After that, check to see if the following has been set Superfetch (should be disabled) Defrag schedule (drive should not be available or is unchecked) TRIM is enabled Note that even if these aren't enabled, that doesn't really affect anything since you can enable these settings. I was thinking about working with the laptop with just the HDD for more time, like a few weeks, but I don't want to stretch this project out too much.
     
×