I'm looking for a very simple tool to monitor the bandwidth of all my applications.
No need for extra features like traffic spying, I'm just interested by bandwidth.
I already know Wireshark (which is great), but what I'm looking for is more something like TcpView (great tool from Sysinternals) with current bandwidth indication.
PS: I'm interested by Windows tools only
Try NetLimiter, which is great for that and also allows you to limit bandwidth usage so that you can test your app in reduced bandwidth scenarios.
Related
Is anybody know a good testing tool that can produce a graph containing the CPU cycle and RAM usage?
What I will do for ex. is I will run an application and while the application is running the testing tool will record CPU cycle and RAM Usage and it will make a graph as an output.
Basically what I'm trying to test is how much heavy load an application put on RAM and CPU.
Thanks in advance.
In case this is Windows the easiest way is probably Performance Monitor (perfmon.exe).
You can configure the counters you are interested in (Such as Processor Time/Commited Bytes/et) and create a Data Collector Set that measures these counters at the desired interval. There are even templates for basic System Performance Report or you can add counters for the particular process you are interested in.
You can schedule the time where you want to execute the sampling and you will be able to see the result using PerfMon or export to a file for further processing.
Video tutorial for the basics: http://www.youtube.com/watch?v=591kfPROYbs
Good Sample where it shows how to monitor SQL:
http://www.brentozar.com/archive/2006/12/dba-101-using-perfmon-for-sql-performance-tuning/
Loadrunner is the best I can think of ; but its very expensive too ! Depending on what you are trying to do, there might be cheaper alternatives.
Any tool which can either hook to the standard Windows or 'NIX system utilities can do this. This has been a defacto feature set on just about every commercial tool for the past 15 years (HP, IBM, Microfocus, etc). Some of the web only commercial tools (but not all) and the hosted services offer this as wekll. For the hosted services you will generally need to punch a hole through your firewall for them to get access to the hosts for monitoring purposes.
On the open source fron this is a totally mixed bag. Some have it, some don't. Some support one platform, but not others (i.e. support Windows, but not 'NIX or vice-versa).
What tools are you using? It is unfortunately common for people to have performance tools in use and not be aware of their existing toolset's monitoring capabilities.
All of the major commercial performance testing tools have this capability, as well as a fair number of the open source ones. The ability to integrate monitor data with response time data is key to the identification of bottlenecks in the system.
If you have a commercial tool and your staff is telling you that it cannot be done then what they are really telling you is that they don't know how to do this with the tool that you have.
It can be done using jmeter, once you install the agent in the target machine you just need to add the perfmon monitor to your test plan.
It will produce 2 result files, the pefmon file and the requests log.
You could also build a plot that compares the resource compsumtion to the load, and througput. The throughput stops increasing when some resource capacity is exceeded. As you can see in the image CPU time increases as the load increases.
JMeter perfmon plugin: http://jmeter-plugins.org/wiki/PerfMon/
I know this is an old thread but I was looking for the same thing today and as I did not found something that was simple to use and produced graphs I made this helper program for apachebench:
https://github.com/juanluisbaptiste/apachebench-graphs
It will run apachebench and plot the results and percentile files using gnuplot.
I hope it helps someone.
I am searching for a convenient but more important: reproducible way to measure the performance of a Remote Desktop Session. (Both bandwidth AND latency)
Does anyone have an idea how this can be done? I have thought about measuring the bandwidth to the server, but I am sure if this is a good indicator because it does not include latency and responsiveness.
I am happy about any ideas, hints or resources to read!
There are performance counters for the "Terminal Service Session" on the destion computer you can use to see the maximum output frames and the compression ration. The issue is that you need a controlled visual environment such as a looping full screen video to flood the pipe. This will show you the maximum bandwidth by a single client across your pipe.
How do you mimic low bandwidth for testing HTML rendering on slow computers? I'm using Safari 4 on a Mac.
Found the SpeedLimit preference tool mentioned in another SO answer. Works for me and is very unobtrusive to use (no application, no command line, no Java).
You're probably looking for traffic shaping, in MacOS X it's included in the kernel. Take a look at http://www.macgeekery.com/hacks/software/traffic_shaping_in_mac_os_x
If you have an Apple Developer account, look for the "Hardware IO Tools for Xcode" download. There is a Network Link Conditioner pref-pane included just for that with some good presets for
3G (Average/Good/Lossy)
Edge (Average/Good/Lossy)
WiFi (Average/Good/Lossy)
Cable
DSL
Also have a look at this answer
I'm a big fan of using the Charles Web Debugging Proxy. It allows you to throttle your own bandwidth to simulate different connection speeds (and a whole mess of other stuff, too). Highly recommended.
You could set up a local webserver (ie Apache) and use the traffic shaping capabilities thereof.
An article on Apache throttling
I guess most popular webservers support this.
edit:Typos
There is a program by Intrarts called "throttled", and the command-line version seems to be free (price):
throttled is a bandwidth shaping
application for Mac OS X and FreeBSD
which allows you to cap your upstream
bandwidth, prioritize ACK packets, and
keep your download speeds high even
when your server is sending out at
full speed.
...which seems to be a little tangential to your needs, but might be able to be configured to do what you want.
I wrote a post on using waterroof to limit bandwidth a while ago.
It uses ipfw under the covers, but has a nice UI for this kind of thing.
One option is Trickle for Mac.
Alternatively, if you don't have to use Safari, you could use Firefox with the Firefox Throttle plugin.
could anyone suggest a way (other than using Task Manager) to track and log a program's usage of CPU and RAM in order to profile its performance?
I'm working under Windows.
Something generic would be useful. A more specific request solution would involve Visual Studio. I've tried Performance Wizard, but it doesn't seem to give me the information I need. Thanks
Process Explorer can be useful.
You can use perfmon utility to gather various counters
Well, there are published APIs for that sort of thing. You might want to take a look at WMI and the Win32_Process class.
If you're looking for a command-line program that gets those things for you there is tasklist and wmic. You can parse their output if you're so inclined.
The Microsoft Platform SDK includes the Windows Performance Toolkit, which tracks CPU, disk, and memory usage over time (along with a ton of other features). It's very handy for tracking down spikes of CPU/memory usage, as well as tracking down issues like why your laptop won't sleep.
How about Intel VTune?
I view the measuring of performance, and the finding of performance problems so as to make the program faster, as two distinctly different goals.
For measuring, one can use profilers, or simply timers, to get the job done.
For finding performance problems, I take an entirely different approach.
I basically have a unix process running and it is doing some heavy processing as well as outputting data over the network. I was wondering what system calls are used to interact with the networking layer.
I would like to measure the performance metrics of this process: CPU usage, networking usage. I am not sure if this process is blocked because it is writing way too fast to the networking layer or if this process is spending too much time processing code.
Any suggestions?
Thanks!
What Unix? Solaris/FreeBSD/OSX have dtrace, Linux has oprofile. All of them have tcpdump for you to analyze the network flow.
What you really need is a profiler. That way, you'll be able to see which parts of your code are taking the most time.
Try http://oprofile.sourceforge.net/, or a specific profiler for your toolchain.
As a quick measurement you can try running your process under strace to see which system calls it makes and see live how long they take.
I suggest valgrind which is another profiler.