<?xml version="1.0" encoding="UTF-8"?>
<?xml-stylesheet type="text/xsl" media="screen" href="/~d/styles/rss2full.xsl"?><?xml-stylesheet type="text/css" media="screen" href="http://feeds.feedburner.com/~d/styles/itemcontent.css"?><rss xmlns:content="http://purl.org/rss/1.0/modules/content/" xmlns:wfw="http://wellformedweb.org/CommentAPI/" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:atom="http://www.w3.org/2005/Atom" xmlns:sy="http://purl.org/rss/1.0/modules/syndication/" xmlns:slash="http://purl.org/rss/1.0/modules/slash/" xmlns:feedburner="http://rssnamespace.org/feedburner/ext/1.0" version="2.0">

<channel>
	<title>New Relic</title>
	
	<link>http://blog.newrelic.com</link>
	<description>Application Performance Management</description>
	<lastBuildDate>Wed, 19 Jun 2013 22:48:18 +0000</lastBuildDate>
	<language>en-US</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.5.1</generator>
		<atom10:link xmlns:atom10="http://www.w3.org/2005/Atom" rel="self" type="application/rss+xml" href="http://feeds.feedburner.com/NewRelic" /><feedburner:info uri="newrelic" /><atom10:link xmlns:atom10="http://www.w3.org/2005/Atom" rel="hub" href="http://pubsubhubbub.appspot.com/" /><item>
		<title>Measure All the Things! Introducing the New Relic Platform</title>
		<link>http://feedproxy.google.com/~r/NewRelic/~3/rsU7rDHm4wY/</link>
		<comments>http://blog.newrelic.com/2013/06/19/monitoring-the-metrics-that-matter-introducing-the-new-relic-platform/#comments</comments>
		<pubDate>Wed, 19 Jun 2013 12:50:33 +0000</pubDate>
		<dc:creator>Christine Sotelo</dc:creator>
				<category><![CDATA[Company News]]></category>
		<category><![CDATA[Infographic]]></category>
		<category><![CDATA[New & Noteworthy]]></category>
		<category><![CDATA[Platform]]></category>
		<category><![CDATA[Product Updates]]></category>
		<category><![CDATA[Publishers]]></category>

		<guid isPermaLink="false">http://blog.newrelic.com/?p=13037</guid>
		<description><![CDATA[<p>As a developer, you understand just how complex an application stack can be. Depending on the environment, there can be hundreds of critical components that make up a single app, and each piece is vital to its performance and reliability. To monitor each component, you may be using multiple tools to gain visibility. But that [...]</p><p>The post <a href="http://blog.newrelic.com/2013/06/19/monitoring-the-metrics-that-matter-introducing-the-new-relic-platform/">Measure All the Things! Introducing the New Relic Platform</a> appeared first on <a href="http://blog.newrelic.com">New Relic blog</a>.</p>]]></description>
				<content:encoded><![CDATA[<p>As a developer, you understand just how complex an application stack can be. Depending on the environment, there can be hundreds of critical components that make up a single app, and each piece is vital to its performance and reliability. To monitor each component, you may be using multiple tools to gain visibility. But that presents another <a title="Don't Get Lost in Data infographic" href="http://www.newrelic.com/assets/resources/infographics/platform_maze_image.png" target="_blank">set of challenges</a>. Most tools aren’t integrated with each other and that can make it overwhelming to troubleshoot app performance issues.</p>
<p>At New Relic, we’ve always strived to make the <a title="Making our Customers Lives a Little Easier with the New Relic Platform" href="http://blog.newrelic.com/?p=13088&amp;preview=true" target="_blank">lives of our customers easier</a> and today we’ve raised that bar even further. We’re excited to announce the release of the New Relic Platform – a seamless new way to monitor the performance of any technology through our intuitive and easy-to-use interface.</p>
<p>With the <a title="New Relic Platform" href="http://www.newrelic.com/platform" target="_blank">New Relic Platform</a>, you’ll be able to get in-depth, real time insight into the performance of each component of your application stack – from cloud services, to the database, caching, networking, queuing and more. And best of all? You’ll be able to do it from a single pane of glass to monitor <i>all</i> the metrics you care about. No more logging in and out of different tools to manage the components in your app environment.</p>
<p>Today’s release includes more than 50 plugins available on the New Relic Platform:</p>
<p style="text-align: center;"><a title="New Relic Platform Publishers" href="http://blog.newrelic.com/wp-content/uploads/platform_publ_IG-final1.png" target="_blank"><img class="aligncenter  wp-image-13097" style="border: 1px solid black;" title="New Relic Platform Publishers" alt="New Relic Platform Publishers" src="http://blog.newrelic.com/wp-content/uploads/platform_publ_IG-final1.png" width="475" height="1280" /></a></p>
<p>Plugins are free to any of our users, and offer built in alerting capabilities and free storage for all monitoring data. Don’t see the plugin you’re looking for? Use your expertise to <a title="Become a Platform Publisher in 4 Easy Steps" href="http://try.newrelic.com/rs/newrelic/images/NewRelic_PluginPublishers.pdf" target="_blank">build one yourself</a> in less than a day to monitor your metrics while leveraging the New Relic Platform, SDK and data visualizations.</p>
<p>To find out everything the New Relic Platform has to offer, visit <a title="New Relic Platform" href="http://www.newrelic.com/platform" target="_blank">newrelic.com/platform</a>. You’ll quickly get insight into all the metrics you care about and wonder how you ever got by without it.</p>
<p>The post <a href="http://blog.newrelic.com/2013/06/19/monitoring-the-metrics-that-matter-introducing-the-new-relic-platform/">Measure All the Things! Introducing the New Relic Platform</a> appeared first on <a href="http://blog.newrelic.com">New Relic blog</a>.</p><div class="feedflare">
<a href="http://feeds.feedburner.com/~ff/NewRelic?a=rsU7rDHm4wY:awc59QgWpmU:yIl2AUoC8zA"><img src="http://feeds.feedburner.com/~ff/NewRelic?d=yIl2AUoC8zA" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/NewRelic?a=rsU7rDHm4wY:awc59QgWpmU:V_sGLiPBpWU"><img src="http://feeds.feedburner.com/~ff/NewRelic?i=rsU7rDHm4wY:awc59QgWpmU:V_sGLiPBpWU" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/NewRelic?a=rsU7rDHm4wY:awc59QgWpmU:F7zBnMyn0Lo"><img src="http://feeds.feedburner.com/~ff/NewRelic?i=rsU7rDHm4wY:awc59QgWpmU:F7zBnMyn0Lo" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/NewRelic?a=rsU7rDHm4wY:awc59QgWpmU:gIN9vFwOqvQ"><img src="http://feeds.feedburner.com/~ff/NewRelic?i=rsU7rDHm4wY:awc59QgWpmU:gIN9vFwOqvQ" border="0"></img></a>
</div><img src="http://feeds.feedburner.com/~r/NewRelic/~4/rsU7rDHm4wY" height="1" width="1"/>]]></content:encoded>
			<wfw:commentRss>http://blog.newrelic.com/2013/06/19/monitoring-the-metrics-that-matter-introducing-the-new-relic-platform/feed/</wfw:commentRss>
		<slash:comments>4</slash:comments>
		<feedburner:origLink>http://blog.newrelic.com/2013/06/19/monitoring-the-metrics-that-matter-introducing-the-new-relic-platform/</feedburner:origLink></item>
		<item>
		<title>Making our Customers Lives a Little Easier with the New Relic Platform</title>
		<link>http://feedproxy.google.com/~r/NewRelic/~3/f2_N62c166c/</link>
		<comments>http://blog.newrelic.com/2013/06/19/making-our-customers-lives-a-little-easier-with-the-new-relic-platform/#comments</comments>
		<pubDate>Wed, 19 Jun 2013 12:48:10 +0000</pubDate>
		<dc:creator>Leigh Shevchik</dc:creator>
				<category><![CDATA[Case Study]]></category>
		<category><![CDATA[Company News]]></category>
		<category><![CDATA[New & Noteworthy]]></category>
		<category><![CDATA[Platform]]></category>
		<category><![CDATA[Product Updates]]></category>
		<category><![CDATA[Video]]></category>

		<guid isPermaLink="false">http://blog.newrelic.com/?p=13088</guid>
		<description><![CDATA[<p>At New Relic, we want to make the lives of our customers a little easier every day. It’s one of our core company values and exactly what the release of the New Relic Platform is all about. Now for the first time ever, you’ll be able to see deep inside your application stack through our easy-to-use UI [...]</p><p>The post <a href="http://blog.newrelic.com/2013/06/19/making-our-customers-lives-a-little-easier-with-the-new-relic-platform/">Making our Customers Lives a Little Easier with the New Relic Platform</a> appeared first on <a href="http://blog.newrelic.com">New Relic blog</a>.</p>]]></description>
				<content:encoded><![CDATA[<p>At New Relic, we want to make the lives of our customers a little easier every day. It’s one of our core company values and exactly what the release of the <a title="New Relic Platform" href="http://www.newrelic.com/platform" target="_blank">New Relic Platform</a> is all about. Now for the first time ever, you’ll be able to see deep inside your application stack through our easy-to-use UI and get immediate insight into all the metrics that are important to you.</p>
<p>But don’t just take our word for it. See the videos and quotes below to see how some of our customers are already getting value out of the New Relic Platform:</p>
<p><span style="font-size: 1.25em;"><strong><a title="Ticketfly" href="http://www.ticketfly.com/" target="_blank">TicketFly</a>:</strong></span><br />
<iframe name="wistia_embed" src="https://fast.wistia.net/embed/iframe/fl1ssofbk6?endVideoBehavior=reset&amp;playButton=false&amp;playerColor=4cb0bd&amp;version=v1&amp;videoHeight=309&amp;videoWidth=550&amp;volumeControl=true" height="309" width="550" frameborder="0" scrolling="no"></iframe></p>
<blockquote><p>By plugging all of these technologies into the New Relic Platform, we’re able to make breakthroughs in solving our problems much faster. It’s like having an MRI of our applications, showing us a slice of data across all systems and making it easier for us to draw correlations.<br />
<em>– Matthew Baird &#8211; VP of Engineering, Ticketfly</em></p></blockquote>
<p><span style="font-size: 1.25em;"><strong><a title="BeenVerified" href="http://www.beenverified.com/" target="_blank">BeenVerified</a>:</strong></span><br />
<iframe name="wistia_embed" src="https://fast.wistia.net/embed/iframe/yweuomm6rr?endVideoBehavior=reset&amp;playButton=false&amp;playerColor=4cb0bd&amp;version=v1&amp;videoHeight=309&amp;videoWidth=550&amp;volumeControl=true" height="309" width="550" frameborder="0" scrolling="no"></iframe></p>
<blockquote><p>A lot of companies want to keep their product tight. But with this platform, New Relic shows that it wants to remain open and let users flesh things out. We know first-hand that people find ways to use our product in ways we couldn&#8217;t possibly predict. The key is to embrace that, promote it, and support it &#8211; and that&#8217;s exactly what New Relic is doing.<br />
<em>&#8211; Jason Amster &#8211; CTO, BeenVerified</em></p></blockquote>
<p><span style="font-size: 1.25em;"><strong><a title="MeetMe" href="http://home.meetme.com/?fullsite" target="_blank">MeetMe</a>:</strong></span><br />
<iframe name="wistia_embed" src="https://fast.wistia.net/embed/iframe/l6ah09fupl?endVideoBehavior=reset&amp;playButton=false&amp;playerColor=4cb0bd&amp;version=v1&amp;videoHeight=309&amp;videoWidth=550&amp;volumeControl=true" height="309" width="550" frameborder="0" scrolling="no"></iframe></p>
<blockquote><p>I would still be flying blind without New Relic. I could get my job done, but frankly it wouldn’t be as easy and it wouldn’t be as fun. It’s truly an enjoyable thing for me to dig through application data, discover issues and fix them. New Relic makes it possible for me to spend much more of my day doing precisely that.”<br />
<em>&#8211; Eric Peterson &#8211; Drupal Web Developer, <a title="Tableau" href="http://www.tableausoftware.com/" target="_blank">Tableau</a></em></p></blockquote>
<blockquote><p>We no longer need to run our own custom metric tracking for all of our resources because we can now get all of that information inside the New Relic Platform. We can aggregate analytics in a single app. We don&#8217;t waste time looking for data &#8211; it&#8217;s all in one dashboard. And with each new plugin, we have a new opportunity to save a little more time.&#8221;<br />
<em>&#8211; James Carr &#8211; Systems Engineer, <a title="Zapier" href="https://zapier.com/" target="_blank">Zapier</a></em></p></blockquote>
<p>Thank you to TicketFly, MeetMe, BeenVerified, Zapier, Tableau and all the other companies that worked with us through this launch. We couldn&#8217;t have done it without you!</p>
<p><span style="font-size: 1.25em;"><strong>Get Started with the New Relic Platform Today!</strong></span><br />
Find out how you can get started with the <a title="New Relic Platform" href="http://www.newrelic.com/platform" target="_blank">New Relic Platform</a> today. And check out <a title="New Relic Platform" href="http://newrelic.com/platform#media-section" target="_blank">our case studies</a> to see what some of our other customers are saying about the New Relic Platform.</p>
<p>The post <a href="http://blog.newrelic.com/2013/06/19/making-our-customers-lives-a-little-easier-with-the-new-relic-platform/">Making our Customers Lives a Little Easier with the New Relic Platform</a> appeared first on <a href="http://blog.newrelic.com">New Relic blog</a>.</p><div class="feedflare">
<a href="http://feeds.feedburner.com/~ff/NewRelic?a=f2_N62c166c:Daa4NtCm-Ac:yIl2AUoC8zA"><img src="http://feeds.feedburner.com/~ff/NewRelic?d=yIl2AUoC8zA" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/NewRelic?a=f2_N62c166c:Daa4NtCm-Ac:V_sGLiPBpWU"><img src="http://feeds.feedburner.com/~ff/NewRelic?i=f2_N62c166c:Daa4NtCm-Ac:V_sGLiPBpWU" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/NewRelic?a=f2_N62c166c:Daa4NtCm-Ac:F7zBnMyn0Lo"><img src="http://feeds.feedburner.com/~ff/NewRelic?i=f2_N62c166c:Daa4NtCm-Ac:F7zBnMyn0Lo" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/NewRelic?a=f2_N62c166c:Daa4NtCm-Ac:gIN9vFwOqvQ"><img src="http://feeds.feedburner.com/~ff/NewRelic?i=f2_N62c166c:Daa4NtCm-Ac:gIN9vFwOqvQ" border="0"></img></a>
</div><img src="http://feeds.feedburner.com/~r/NewRelic/~4/f2_N62c166c" height="1" width="1"/>]]></content:encoded>
			<wfw:commentRss>http://blog.newrelic.com/2013/06/19/making-our-customers-lives-a-little-easier-with-the-new-relic-platform/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		<feedburner:origLink>http://blog.newrelic.com/2013/06/19/making-our-customers-lives-a-little-easier-with-the-new-relic-platform/</feedburner:origLink></item>
		<item>
		<title>An In-Depth Look at the New Relic Platform</title>
		<link>http://feedproxy.google.com/~r/NewRelic/~3/ITabhwa5u5A/</link>
		<comments>http://blog.newrelic.com/2013/06/19/an-indepth-look-at-the-new-relic-platform/#comments</comments>
		<pubDate>Wed, 19 Jun 2013 12:45:31 +0000</pubDate>
		<dc:creator>Kevin McGuire and Lee Atchison</dc:creator>
				<category><![CDATA[Company News]]></category>
		<category><![CDATA[New & Noteworthy]]></category>
		<category><![CDATA[Platform]]></category>
		<category><![CDATA[Product Updates]]></category>
		<category><![CDATA[Publishers]]></category>
		<category><![CDATA[Top Post]]></category>

		<guid isPermaLink="false">http://blog.newrelic.com/?p=13038</guid>
		<description><![CDATA[<p>A modern application is comprised of a complex technology stack. In addition to the app server, the perceived performance of your app is dictated by the performance of databases, caching systems, message queues and the like. Something as simple as a poorly behaving network switch can impact the performance of your end user experience. To [...]</p><p>The post <a href="http://blog.newrelic.com/2013/06/19/an-indepth-look-at-the-new-relic-platform/">An In-Depth Look at the New Relic Platform</a> appeared first on <a href="http://blog.newrelic.com">New Relic blog</a>.</p>]]></description>
				<content:encoded><![CDATA[<p>A modern application is comprised of a complex technology stack. In addition to the app server, the perceived performance of your app is dictated by the performance of databases, caching systems, message queues and the like. Something as simple as a poorly behaving network switch can impact the performance of your end user experience. To track down performance problems, you need performance metrics into each of these technologies. And wouldn’t it be great if you could have visibility into all of them, in an intuitive and consistent way, using a tool you already know and love?</p>
<p><span style="font-size: 1.25em;"><b>Introducing Platform Plugins</b></span><br />
The <a title="New Relic Platform" href="http://www.newrelic.com/platform" target="_blank">New Relic Platform</a> addresses this challenge with the new plugin architecture. Plugins provide a way to monitor each of these technologies, extending the New Relic interface with custom-made dashboards specific to each. They pair the reporting of metrics specific to the technology being monitored with a first class visualization of those metrics.</p>
<p>Plugins dramatically expand the possibilities for what you can monitor with New Relic, in a manner that retains all the New Relic goodness you’ve come to expect. Now you’ll have immediate, actionable insight in an easy to use UI for all the technologies you rely on everyday.</p>
<p>A wide variety of plugins are available through New Relic’s Plugin Central, so take a look and see what it has to offer. And if you don’t see one that you need, <a title="Become a Plugin Publisher in 4 Easy Steps" href="http://try.newrelic.com/rs/newrelic/images/NewRelic_PluginPublishers.pdf" target="_blank">consider creating one yourself</a>. It’s easy and fun to do.</p>
<p><span style="font-size: 1.25em;"><b>A Little More About Plugins</b></span><br />
Plugins are made up of two parts:</p>
<p style="padding-left: 30px;">* An agent that observes the system being monitored and reports metrics about that system up to the New Relic data center</p>
<p style="padding-left: 30px;">* A matching set of dashboards that display those metrics</p>
<p>Any type of technology – from a database to a caching system or switch – can have an agent written specifically for it. And such an agent will generate metrics that make sense for that technology. Additionally, each type of agent is paired with a UI specific to that agent. So it not only shows those technology specific metrics, it also arranges the information in a way that makes sense to anyone who uses it. For example, the arrangement of dashboards for a database will make sense for those who manage that kind of database and would be significantly different for those of a caching system.</p>
<p>A subset of those metrics is shown in a summary page for a specific plugin and New Relic monitors those metrics continuously. Users can set thresholds for specific metrics based on predefined limits. If a threshold is passed, an alert can be sent via email or any other notification mechanism New Relic supports.</p>
<p style="text-align: center;"><a title="New Relic Platform Infrastructure" href="http://blog.newrelic.com/wp-content/uploads/platform_infrastructure.png" target="_blank"><img class="aligncenter  wp-image-13099" title="New Relic Platform Infrastructure" alt="New Relic Platform Infrastructure" src="http://blog.newrelic.com/wp-content/uploads/platform_infrastructure.png" width="540" height="355" /></a></p>
<p>Anything that can provide performance metrics can have a plugin written for it. The only requirement is that it has some kind of API to gather the metrics. Plugins work by polling that API, gathering up the metrics and reporting them up to a New Relic account.</p>
<p><span style="font-size: 1.25em;"><b>Installing and Running Plugins</b></span><br />
There are generally two types of plugins: those written against the Platform SDK that have an on-premise agent running and those written to integrate with a SaaS provider.</p>
<p>For the SDK, the language choices are Java and Ruby. While the install process can vary from plugin to plugin, it’s usually quite simple:</p>
<p style="padding-left: 30px;">1. Specify the license key for the account that will receive the metrics.</p>
<p style="padding-left: 30px;">2. Configure the plugin with information about the system it’s monitoring (e.g., the database servers)</p>
<p style="padding-left: 30px;">3. Run the agent</p>
<p style="padding-left: 60px;">* For Java, run a single .jar file<br />
* For Ruby, do a bundle install and bundle exec of the gem</p>
<p>Because plugins monitor the systems <i>externally</i> through an API, they have minimal impact on the systems being monitored. For example, if a plugin stopped working for some reason, the system would not be affected. SaaS plugins do not need to be installed and only require a license key for sharing.</p>
<p>Soon after a plugin starts reporting metrics to your New Relic account, you’ll see the plugin appear in the left hand navigation panel in New Relic. (It will also be labeled with the word ‘New’.) From there, you can immediately start exploring the dashboards for that plugin.</p>
<p style="text-align: center;"><a title="New Relic Platform Overview screenshot" href="http://blog.newrelic.com/wp-content/uploads/platform_overview_screenshot.png" target="_blank"><img class="aligncenter  wp-image-13100" style="border: 1px solid black;" title="New Relic Platform Overview screenshot" alt="New Relic Platform Overview screenshot" src="http://blog.newrelic.com/wp-content/uploads/platform_overview_screenshot.png" width="540" height="332" /></a></p>
<p><span style="font-size: 1.25em;"><b>Plugin Central</b></span><br />
The New Relic Platform is open and extensible. This encourages our community to create a rich variety of plugins. As such, we have plugins written by our partners, our customers and ourselves. There may be multiple plugins for the same technology and all public plugins are available through <a title="New Relic Plugin Central" href="https://rpm.newrelic.com/accounts/1/plugins/directory" target="_blank">Plugin Central in New Relic</a>. And each publisher is responsible for supporting and maintaining their plugins.</p>
<p><span style="font-size: 1.25em;"><b>Developing Plugins</b></span><br />
The New Relic Platform provides an SDK that makes it easy to write on-prem plugin agents. It takes care of things like communication with the New Relic data center, running the polling loop, and logging. Plugin authors only need to focus on gathering metrics and calling a simple method to report their relative values.</p>
<p>Our goal is to ensure that the effort required to write a plugin is relative to the effort required to access that technology’s API. If it’s easy to get metrics from it, it will be easy to write an agent for it. From there, the UI is authored using an extension of the New Relic Custom Dashboards feature.</p>
<p>Currently you can choose one of two languages to write your plugins: Java and Ruby. We recommend Java because it typically has the simplest install. You can develop your plugin in whatever IDE you choose and manage it in any repository. (We recommend GitHub.)</p>
<p>In the future, we hope to be able to provide better development and user features by pairing Java and GitHub.</p>
<p><span style="font-size: 1.25em;"><b>From Agent to UI</b></span><br />
So far we’ve said that a plugin is comprised of an agent that reports metrics and a matching UI in New Relic. But how do we know which UI goes with which agent?</p>
<p>Each agent has a specified Globally Unique Identifier (GUID) within it. This is chosen by the plugin author and identifies the plugin forever. We recommend that you construct it from a reverse DNS of your company (i.e. com.mycompany.myplugin).</p>
<p>After your basic agent is written, the next step is to run your agent and start reporting metrics to your account. As we described earlier, you’ll soon see a new entry in New Relic. Its name will be the last segment of your GUID, and an asterisk ‘*’ will appear at the end to signify it’s new and under construction.</p>
<p>From there, you can select the plugin and begin authoring dashboards and specifying summary metrics. These are constructed from the reported metrics.</p>
<p>And that’s it!</p>
<p><span style="font-size: 1.25em;"><b>Sharing your Plugin</b></span><br />
You can create a plugin for your own in-house use. Or you may decide to make it available for the entire New Relic community. The decision is yours.</p>
<p>Publishing the plugin makes it available on Plugin Central for all New Relic account holders to see. It’s a simple matter of filling out some information, such as a description of your plugin and your support links.</p>
<p>Publishing associates the previously chosen GUID with that plugin. When other New Relic users run your agent, we can look up the UI you built and published for the plugin, and instantiate that UI in their account. As they start reporting metrics with your agent to their account, your plugin appears in their left side navigation. And clicking on it shows them their metrics in the UI you published. How cool is that?</p>
<p><span style="font-size: 1.25em;"><b>Getting Started with the New Relic Platform</b></span><br />
The New Relic Platform is designed to make your lives easier and more productive by bringing metrics from other tools into New Relic and expanding your view into key performance metrics across your technology stack.  It’s fun and easy.  Get started today by visiting our <a title="New Relic Platform" href="http://www.newrelic.com/platform" target="_blank">Platform page</a>. And check out what some of our customers are already saying about building and using plugins in our case studies.</p>
<p>The post <a href="http://blog.newrelic.com/2013/06/19/an-indepth-look-at-the-new-relic-platform/">An In-Depth Look at the New Relic Platform</a> appeared first on <a href="http://blog.newrelic.com">New Relic blog</a>.</p><div class="feedflare">
<a href="http://feeds.feedburner.com/~ff/NewRelic?a=ITabhwa5u5A:YIcoOZsrHdY:yIl2AUoC8zA"><img src="http://feeds.feedburner.com/~ff/NewRelic?d=yIl2AUoC8zA" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/NewRelic?a=ITabhwa5u5A:YIcoOZsrHdY:V_sGLiPBpWU"><img src="http://feeds.feedburner.com/~ff/NewRelic?i=ITabhwa5u5A:YIcoOZsrHdY:V_sGLiPBpWU" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/NewRelic?a=ITabhwa5u5A:YIcoOZsrHdY:F7zBnMyn0Lo"><img src="http://feeds.feedburner.com/~ff/NewRelic?i=ITabhwa5u5A:YIcoOZsrHdY:F7zBnMyn0Lo" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/NewRelic?a=ITabhwa5u5A:YIcoOZsrHdY:gIN9vFwOqvQ"><img src="http://feeds.feedburner.com/~ff/NewRelic?i=ITabhwa5u5A:YIcoOZsrHdY:gIN9vFwOqvQ" border="0"></img></a>
</div><img src="http://feeds.feedburner.com/~r/NewRelic/~4/ITabhwa5u5A" height="1" width="1"/>]]></content:encoded>
			<wfw:commentRss>http://blog.newrelic.com/2013/06/19/an-indepth-look-at-the-new-relic-platform/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		<feedburner:origLink>http://blog.newrelic.com/2013/06/19/an-indepth-look-at-the-new-relic-platform/</feedburner:origLink></item>
		<item>
		<title>The Metrics You Want, When You Need Them: Getting the Most Out of Your New Relic Platform Plugins</title>
		<link>http://feedproxy.google.com/~r/NewRelic/~3/Fg1Z4TEcl1s/</link>
		<comments>http://blog.newrelic.com/2013/06/19/getting-the-most-out-of-your-new-relic-platform-plugins/#comments</comments>
		<pubDate>Wed, 19 Jun 2013 12:43:42 +0000</pubDate>
		<dc:creator>Leigh Shevchik</dc:creator>
				<category><![CDATA[Company News]]></category>
		<category><![CDATA[New & Noteworthy]]></category>
		<category><![CDATA[News]]></category>
		<category><![CDATA[Platform]]></category>
		<category><![CDATA[Product Updates]]></category>
		<category><![CDATA[Publishers]]></category>
		<category><![CDATA[Top Post]]></category>

		<guid isPermaLink="false">http://blog.newrelic.com/?p=13094</guid>
		<description><![CDATA[<p>No matter what your job title is, the chances are you know how difficult it is to get data out of the tools you use. And the more components you have in your application stack, the more tools you rely on to get the information you need about your app’s performance and reliability. With the [...]</p><p>The post <a href="http://blog.newrelic.com/2013/06/19/getting-the-most-out-of-your-new-relic-platform-plugins/">The Metrics You Want, When You Need Them: Getting the Most Out of Your New Relic Platform Plugins</a> appeared first on <a href="http://blog.newrelic.com">New Relic blog</a>.</p>]]></description>
				<content:encoded><![CDATA[<p>No matter what your job title is, the chances are you know how difficult it is to get data out of the tools you use. And the more components you have in your application stack, the more tools you rely on to get the information you need about your app’s performance and reliability.</p>
<p>With the <a title="New Relic Platform" href="http://www.newrelic.com/platform" target="_blank">New Relic Platform</a>, we’ve tried to make it easy for you to get the metrics you need from our easy-to-use, intuitive UI. But we couldn’t have succeeded without the support of the New Relic community and our plugin publishers.</p>
<p>In the videos below, our plugin publishers talk about the value the New Relic Platform offers their customers and their organizations:</p>
<p><span style="font-size: 1.25em;"><strong>MongoHQ:</strong></span><br />
<iframe name="wistia_embed" src="https://fast.wistia.net/embed/iframe/c7arg8vt9b?endVideoBehavior=reset&amp;playButton=false&amp;playerColor=4cb0bd&amp;version=v1&amp;videoHeight=309&amp;videoWidth=550&amp;volumeControl=true" height="309" width="550" frameborder="0" scrolling="no"></iframe></p>
<p><span style="font-size: 1.25em;"><strong>Twilio:</strong></span><br />
<iframe name="wistia_embed" src="https://fast.wistia.net/embed/iframe/rfa37b6v9v?endVideoBehavior=reset&amp;playButton=false&amp;playerColor=4cb0bd&amp;version=v1&amp;videoHeight=309&amp;videoWidth=550&amp;volumeControl=true" height="309" width="550" frameborder="0" scrolling="no"></iframe></p>
<p><span style="font-size: 1.25em;"><strong>Pivotal:</strong></span><br />
<iframe name="wistia_embed" src="https://fast.wistia.net/embed/iframe/jfqimqaokk?endVideoBehavior=reset&amp;playButton=false&amp;playerColor=4cb0bd&amp;version=v1&amp;videoHeight=309&amp;videoWidth=550&amp;volumeControl=true" height="309" width="550" frameborder="0" scrolling="no"></iframe></p>
<p><span style="font-size: 1.25em;"><strong>SendGrid:</strong></span><br />
<iframe name="wistia_embed" src="https://fast.wistia.net/embed/iframe/4szhhzw06m?endVideoBehavior=reset&amp;playButton=false&amp;playerColor=4cb0bd&amp;version=v1&amp;videoHeight=309&amp;videoWidth=550&amp;volumeControl=true" height="309" width="550" frameborder="0" scrolling="no"></iframe></p>
<p><span style="font-size: 1.25em;"><strong>EnterpriseDB:</strong></span><br />
<iframe name="wistia_embed" src="https://fast.wistia.net/embed/iframe/206wg97q0y?endVideoBehavior=reset&amp;playButton=false&amp;playerColor=4cb0bd&amp;version=v1&amp;videoHeight=309&amp;videoWidth=550&amp;volumeControl=true" height="309" width="550" frameborder="0" scrolling="no"></iframe></p>
<p><span style="font-size: 1.25em;"><strong>Get Started with the New Relic Platform</strong></span><br />
Find the full list of available plugins on New Relic&#8217;s <a title="New Relic Platform's Plugin Central" href="https://rpm.newrelic.com/accounts/1/plugins/directory" target="_blank">Plugin Centra</a>l. And if you don&#8217;t see what you&#8217;re looking for, <a title="Become a Plugin Publisher in 4 Easy Steps" href="http://try.newrelic.com/rs/newrelic/images/NewRelic_PluginPublishers.pdf" target="_blank">try building one yourself</a>. It&#8217;s easy to do and easy to implement. For more information, see the <a title="New Relic Platform" href="http://www.newrelic.com/platform">New Relic Platform page</a>.</p>
<p>The post <a href="http://blog.newrelic.com/2013/06/19/getting-the-most-out-of-your-new-relic-platform-plugins/">The Metrics You Want, When You Need Them: Getting the Most Out of Your New Relic Platform Plugins</a> appeared first on <a href="http://blog.newrelic.com">New Relic blog</a>.</p><div class="feedflare">
<a href="http://feeds.feedburner.com/~ff/NewRelic?a=Fg1Z4TEcl1s:Jernuh3nKV4:yIl2AUoC8zA"><img src="http://feeds.feedburner.com/~ff/NewRelic?d=yIl2AUoC8zA" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/NewRelic?a=Fg1Z4TEcl1s:Jernuh3nKV4:V_sGLiPBpWU"><img src="http://feeds.feedburner.com/~ff/NewRelic?i=Fg1Z4TEcl1s:Jernuh3nKV4:V_sGLiPBpWU" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/NewRelic?a=Fg1Z4TEcl1s:Jernuh3nKV4:F7zBnMyn0Lo"><img src="http://feeds.feedburner.com/~ff/NewRelic?i=Fg1Z4TEcl1s:Jernuh3nKV4:F7zBnMyn0Lo" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/NewRelic?a=Fg1Z4TEcl1s:Jernuh3nKV4:gIN9vFwOqvQ"><img src="http://feeds.feedburner.com/~ff/NewRelic?i=Fg1Z4TEcl1s:Jernuh3nKV4:gIN9vFwOqvQ" border="0"></img></a>
</div><img src="http://feeds.feedburner.com/~r/NewRelic/~4/Fg1Z4TEcl1s" height="1" width="1"/>]]></content:encoded>
			<wfw:commentRss>http://blog.newrelic.com/2013/06/19/getting-the-most-out-of-your-new-relic-platform-plugins/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		<feedburner:origLink>http://blog.newrelic.com/2013/06/19/getting-the-most-out-of-your-new-relic-platform-plugins/</feedburner:origLink></item>
		<item>
		<title>Live from Velocity 2013: 22 Ways to Improve Application Performance</title>
		<link>http://feedproxy.google.com/~r/NewRelic/~3/2nQKLsV5kQ0/</link>
		<comments>http://blog.newrelic.com/2013/06/19/ways-to-improve-application-performance/#comments</comments>
		<pubDate>Wed, 19 Jun 2013 10:35:48 +0000</pubDate>
		<dc:creator>David Spark</dc:creator>
				<category><![CDATA[Events]]></category>
		<category><![CDATA[Performance Tech Tips]]></category>
		<category><![CDATA[Top Post]]></category>
		<category><![CDATA[Video]]></category>
		<category><![CDATA[Velocity Conference]]></category>

		<guid isPermaLink="false">http://blog.newrelic.com/?p=13114</guid>
		<description><![CDATA[<p>Wouldn&#8217;t it be nice if last year you knew all the stuff that you learned this year? Playing the &#8220;could&#8217;ve, would&#8217;ve, should&#8217;ve&#8221; game isn&#8217;t going to make your application any faster. But getting tips from the web performance community will! With that in mind, I asked attendees at the Velocity 2013 pre-party, &#8220;What are you [...]</p><p>The post <a href="http://blog.newrelic.com/2013/06/19/ways-to-improve-application-performance/">Live from Velocity 2013: 22 Ways to Improve Application Performance</a> appeared first on <a href="http://blog.newrelic.com">New Relic blog</a>.</p>]]></description>
				<content:encoded><![CDATA[<p>Wouldn&#8217;t it be nice if last year you knew all the stuff that you learned this year? Playing the &#8220;could&#8217;ve, would&#8217;ve, should&#8217;ve&#8221; game isn&#8217;t going to make your application any faster. But getting tips from the web performance community will!</p>
<p>With that in mind, I asked attendees at the <a title="Velocity 2013" href="http://velocityconf.com/velocity2013/public/content/home" target="_blank">Velocity 2013</a> pre-party, &#8220;What are you doing differently this year to improve application performance that you didn’t do last year?” This is what they had to say:</p>
<p><iframe name="wistia_embed" src="https://fast.wistia.net/embed/iframe/g0tu476lqz?controlsVisibleOnLoad=true&amp;version=v1&amp;videoHeight=360&amp;videoWidth=640&amp;volumeControl=true" height="360" width="640" frameborder="0" scrolling="no"></iframe></p>
<p>The post <a href="http://blog.newrelic.com/2013/06/19/ways-to-improve-application-performance/">Live from Velocity 2013: 22 Ways to Improve Application Performance</a> appeared first on <a href="http://blog.newrelic.com">New Relic blog</a>.</p><div class="feedflare">
<a href="http://feeds.feedburner.com/~ff/NewRelic?a=2nQKLsV5kQ0:Wd4YObIKnTE:yIl2AUoC8zA"><img src="http://feeds.feedburner.com/~ff/NewRelic?d=yIl2AUoC8zA" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/NewRelic?a=2nQKLsV5kQ0:Wd4YObIKnTE:V_sGLiPBpWU"><img src="http://feeds.feedburner.com/~ff/NewRelic?i=2nQKLsV5kQ0:Wd4YObIKnTE:V_sGLiPBpWU" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/NewRelic?a=2nQKLsV5kQ0:Wd4YObIKnTE:F7zBnMyn0Lo"><img src="http://feeds.feedburner.com/~ff/NewRelic?i=2nQKLsV5kQ0:Wd4YObIKnTE:F7zBnMyn0Lo" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/NewRelic?a=2nQKLsV5kQ0:Wd4YObIKnTE:gIN9vFwOqvQ"><img src="http://feeds.feedburner.com/~ff/NewRelic?i=2nQKLsV5kQ0:Wd4YObIKnTE:gIN9vFwOqvQ" border="0"></img></a>
</div><img src="http://feeds.feedburner.com/~r/NewRelic/~4/2nQKLsV5kQ0" height="1" width="1"/>]]></content:encoded>
			<wfw:commentRss>http://blog.newrelic.com/2013/06/19/ways-to-improve-application-performance/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		<feedburner:origLink>http://blog.newrelic.com/2013/06/19/ways-to-improve-application-performance/</feedburner:origLink></item>
		<item>
		<title>Live from Velocity: Steve Souders on Fostering a Performance Culture</title>
		<link>http://feedproxy.google.com/~r/NewRelic/~3/CvSDL-kAO9I/</link>
		<comments>http://blog.newrelic.com/2013/06/19/steve-souders-on-fostering-a-performance-culture/#comments</comments>
		<pubDate>Wed, 19 Jun 2013 10:30:03 +0000</pubDate>
		<dc:creator>David Spark</dc:creator>
				<category><![CDATA[Events]]></category>
		<category><![CDATA[Performance Tech Tips]]></category>
		<category><![CDATA[Top Post]]></category>
		<category><![CDATA[Video]]></category>
		<category><![CDATA[Performance Culture]]></category>
		<category><![CDATA[Steve Souders]]></category>
		<category><![CDATA[Velocity Conference]]></category>

		<guid isPermaLink="false">http://blog.newrelic.com/?p=13102</guid>
		<description><![CDATA[<p>On the first day of Velocity 2013, I asked Steve Souders about an article he wrote last month on creating a web performance culture. Steve is the co-chair of the conference and the Head Performance Engineer at Google. As he explains, “It’s hard to make a strong argument for performance because we’re not talking about making visible changes to the [...]</p><p>The post <a href="http://blog.newrelic.com/2013/06/19/steve-souders-on-fostering-a-performance-culture/">Live from Velocity: Steve Souders on Fostering a Performance Culture</a> appeared first on <a href="http://blog.newrelic.com">New Relic blog</a>.</p>]]></description>
				<content:encoded><![CDATA[<p>On the first day of <a title="Velocity 2013" href="http://velocityconf.com/velocity2013/public/content/home" target="_blank">Velocity 2013</a>, I asked <a title="Steve Souders on Twitter" href="http://twitter.com/souders" target="_blank">Steve Souders</a> about an article he wrote last month on <a title="Creating a Performance Culture" href="http://www.stevesouders.com/blog/2013/05/17/creating-a-performance-culture/" target="_blank">creating a web performance culture</a>. Steve is the co-chair of the conference and the Head Performance Engineer at <a title="Google" href="http://google.com/" target="_blank">Google</a>. As he explains, “It’s hard to make a strong argument for performance because we’re not talking about making visible changes to the website.&#8221;</p>
<p>In this video, Steve explains why companies need to make web performance a high priority and how to bring that mindset to your organization.</p>
<p><iframe name="wistia_embed" src="https://fast.wistia.net/embed/iframe/4ufud4p92y?endVideoBehavior=reset&amp;playButton=false&amp;playerColor=4cb0bd&amp;version=v1&amp;videoHeight=309&amp;videoWidth=550&amp;volumeControl=true" height="309" width="550" frameborder="0" scrolling="no"></iframe></p>
<p>The post <a href="http://blog.newrelic.com/2013/06/19/steve-souders-on-fostering-a-performance-culture/">Live from Velocity: Steve Souders on Fostering a Performance Culture</a> appeared first on <a href="http://blog.newrelic.com">New Relic blog</a>.</p><div class="feedflare">
<a href="http://feeds.feedburner.com/~ff/NewRelic?a=CvSDL-kAO9I:nUa725UDInA:yIl2AUoC8zA"><img src="http://feeds.feedburner.com/~ff/NewRelic?d=yIl2AUoC8zA" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/NewRelic?a=CvSDL-kAO9I:nUa725UDInA:V_sGLiPBpWU"><img src="http://feeds.feedburner.com/~ff/NewRelic?i=CvSDL-kAO9I:nUa725UDInA:V_sGLiPBpWU" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/NewRelic?a=CvSDL-kAO9I:nUa725UDInA:F7zBnMyn0Lo"><img src="http://feeds.feedburner.com/~ff/NewRelic?i=CvSDL-kAO9I:nUa725UDInA:F7zBnMyn0Lo" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/NewRelic?a=CvSDL-kAO9I:nUa725UDInA:gIN9vFwOqvQ"><img src="http://feeds.feedburner.com/~ff/NewRelic?i=CvSDL-kAO9I:nUa725UDInA:gIN9vFwOqvQ" border="0"></img></a>
</div><img src="http://feeds.feedburner.com/~r/NewRelic/~4/CvSDL-kAO9I" height="1" width="1"/>]]></content:encoded>
			<wfw:commentRss>http://blog.newrelic.com/2013/06/19/steve-souders-on-fostering-a-performance-culture/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		<feedburner:origLink>http://blog.newrelic.com/2013/06/19/steve-souders-on-fostering-a-performance-culture/</feedburner:origLink></item>
		<item>
		<title>Get Up to Speed at Velocity</title>
		<link>http://feedproxy.google.com/~r/NewRelic/~3/-ESPx5BEEgA/</link>
		<comments>http://blog.newrelic.com/2013/06/17/velocity-2013-new-relic/#comments</comments>
		<pubDate>Tue, 18 Jun 2013 00:00:00 +0000</pubDate>
		<dc:creator>Leigh Shevchik</dc:creator>
				<category><![CDATA[Company News]]></category>
		<category><![CDATA[Events]]></category>
		<category><![CDATA[Top Post]]></category>

		<guid isPermaLink="false">http://blog.newrelic.com/?p=13079</guid>
		<description><![CDATA[<p>Last year&#8217;s Velocity conference was amazing, so naturally New Relic is participating again this year. This gathering features some of the most knowledgable experts in web performance. Once again, we&#8217;ll kick off the event with an &#8216;Optimized Breakfast&#8216; on Tuesday morning (June 18) with our COO Chris Cook, where you can hear company news and meet [...]</p><p>The post <a href="http://blog.newrelic.com/2013/06/17/velocity-2013-new-relic/">Get Up to Speed at Velocity</a> appeared first on <a href="http://blog.newrelic.com">New Relic blog</a>.</p>]]></description>
				<content:encoded><![CDATA[<p>Last year&#8217;s <a href="http://velocityconf.com/velocity2013/public/content/home" target="_blank">Velocity</a> conference was amazing, so naturally New Relic is participating again this year. This gathering features some of the most knowledgable experts in web performance.</p>
<p><a title="Velocity 2013" href="http://blog.newrelic.com/wp-content/uploads/event-velocity-2013.png" target="_blank"><img class=" wp-image-13080 alignright" style="margin: 15px;" title="Velocity 2013" alt="Velocity 2013" src="http://blog.newrelic.com/wp-content/uploads/event-velocity-2013.png" width="190" height="140" /></a></p>
<p>Once again, we&#8217;ll kick off the event with an &#8216;<a title="Optimized Breakfast sign up" href="http://velocity2013-breakfast.eventbrite.com" target="_blank">Optimized Breakfast</a>&#8216; on Tuesday morning (June 18) with our COO Chris Cook, where you can hear company news and meet the New Relic team. Sign up <a title="Eventbrite breakfast with Chris Cook" href="http://velocity2013-breakfast.eventbrite.com" target="_blank">here</a> — seats are limited. If you&#8217;re not an early riser, then come network with us at our happy hour from 6:30-9pm Wednesday in our room at the convention center!</p>
<p>Then, join us for <a title="Velocity 2013 Office Hours" href="http://velocityconf.com/velocity2013/public/content/office-hours?imm_mid=0aa4e6&amp;cmp=em-velocity-vl13-office-hours" target="_blank">Office Hours</a> on Wednesday. Meet New Relic&#8217;s Senior Director of Product Management <a title="Patrick Lightbody at Velocity 2013" href="http://velocityconf.com/velocity2013/public/schedule/detail/30546" target="_blank">Patrick Lightbody</a> and Software Development Lead <a title="Bill Kayser" href="http://velocityconf.com/velocity2013/public/schedule/speaker/61265" target="_blank">Bill Kayser</a> at 1:15pm in Exhibit Hall 1. This is a great opportunity to talk with them about visualization techniques. <a title="Click the button on the Office Hours page to sign up" href="http://velocityconf.com/velocity2013/public/content/office-hours?imm_mid=0aa4e6&amp;cmp=em-velocity-vl13-office-hours" target="_blank">Sign up now</a> to make sure you get in!</p>
<p>And don&#8217;t miss our presentations! Here&#8217;s the lineup of what we have in store for you.</p>
<p>* Tuesday, June 18 – &#8216;<a title="Description of Choose Your Weapon presentation at Velocity" href="http://velocityconf.com/velocity2013/public/schedule/detail/28445" target="_blank">Choose Your Weapon: A Survey for Different Visualizations of Performance Data</a>&#8216; with New Relic&#8217;s Bill Kayser and Patrick Lightbody<br />
* Thursday, June 20 (10:30am) – &#8216;<a title="details on Velocity website" href="http://velocityconf.com/velocity2013/public/schedule/detail/30019" target="_blank">It&#8217;s 10pm. Do you know where your code is?</a>&#8216; with Patrick Lightbody.<br />
* Thursday, June 20 (2pm) — &#8216;<a title="Info on Velocity site" href="http://velocityconf.com/velocity2013/public/schedule/detail/30333" target="_blank">Surveying the RUM Landscape</a>&#8216; with Patrick Lightbody (New Relic), Ilya Grigorik (Google), Buddy Brewer (SOASTA), and Jon Fox (Torbit).</p>
<p>For a full <a href="http://velocityconf.com/velocity2013/public/schedule/grid/public-grid" target="_blank">program list,</a> see the Velocity site.</p>
<p>It&#8217;s not too late to <a title="Buy conference tickets" href="https://en.oreilly.com/velocity2013/public/register" target="_blank">get your ticket</a> – join us at the Hyatt Regency in Santa Clara, CA. We&#8217;ll be at booth #309. We look forward to seeing you there! Come get your Nerd Life t-shirt and don&#8217;t forget: <a href="http://newrelic.com/velocity" target="_blank">conference participants</a> can get our New Relic Pro free for 30 days.</p>
<p>The post <a href="http://blog.newrelic.com/2013/06/17/velocity-2013-new-relic/">Get Up to Speed at Velocity</a> appeared first on <a href="http://blog.newrelic.com">New Relic blog</a>.</p><div class="feedflare">
<a href="http://feeds.feedburner.com/~ff/NewRelic?a=-ESPx5BEEgA:3CdMb5LZWPs:yIl2AUoC8zA"><img src="http://feeds.feedburner.com/~ff/NewRelic?d=yIl2AUoC8zA" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/NewRelic?a=-ESPx5BEEgA:3CdMb5LZWPs:V_sGLiPBpWU"><img src="http://feeds.feedburner.com/~ff/NewRelic?i=-ESPx5BEEgA:3CdMb5LZWPs:V_sGLiPBpWU" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/NewRelic?a=-ESPx5BEEgA:3CdMb5LZWPs:F7zBnMyn0Lo"><img src="http://feeds.feedburner.com/~ff/NewRelic?i=-ESPx5BEEgA:3CdMb5LZWPs:F7zBnMyn0Lo" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/NewRelic?a=-ESPx5BEEgA:3CdMb5LZWPs:gIN9vFwOqvQ"><img src="http://feeds.feedburner.com/~ff/NewRelic?i=-ESPx5BEEgA:3CdMb5LZWPs:gIN9vFwOqvQ" border="0"></img></a>
</div><img src="http://feeds.feedburner.com/~r/NewRelic/~4/-ESPx5BEEgA" height="1" width="1"/>]]></content:encoded>
			<wfw:commentRss>http://blog.newrelic.com/2013/06/17/velocity-2013-new-relic/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		<feedburner:origLink>http://blog.newrelic.com/2013/06/17/velocity-2013-new-relic/</feedburner:origLink></item>
		<item>
		<title>Android Developer? We’ve Got a Special Treat For You</title>
		<link>http://feedproxy.google.com/~r/NewRelic/~3/EU2STuMnYM4/</link>
		<comments>http://blog.newrelic.com/2013/06/14/new-relic-goodness-for-android-developers/#comments</comments>
		<pubDate>Fri, 14 Jun 2013 15:11:10 +0000</pubDate>
		<dc:creator>Anusha Sethuraman</dc:creator>
				<category><![CDATA[Company News]]></category>
		<category><![CDATA[Mobile]]></category>
		<category><![CDATA[Product Updates]]></category>
		<category><![CDATA[Top Post]]></category>
		<category><![CDATA[Video]]></category>

		<guid isPermaLink="false">http://blog.newrelic.com/?p=13069</guid>
		<description><![CDATA[<p>If you&#8217;re an Android Developer, we&#8217;ve got some exciting news for you. New Relic for Mobile Apps now supports Ant, Maven, Eclipse and Google&#8217;s latest Android build system, Gradle. (Yes, for real!) And, as an added bonus, we streamlined the Ant install process for you as well. Lots of optimization goodness for all you Android developers! It’s [...]</p><p>The post <a href="http://blog.newrelic.com/2013/06/14/new-relic-goodness-for-android-developers/">Android Developer? We&#8217;ve Got a Special Treat For You</a> appeared first on <a href="http://blog.newrelic.com">New Relic blog</a>.</p>]]></description>
				<content:encoded><![CDATA[<p>If you&#8217;re an Android Developer, we&#8217;ve got some exciting news for you. New Relic for Mobile Apps now supports Ant, Maven, Eclipse and Google&#8217;s latest Android build system, <a href="http://blog.newrelic.com/2013/06/07/migrating-your-android-app-from-eclipse-to-android-studio/">Gradle</a>. (Yes, for real!) And, as an added bonus, we streamlined the Ant install process for you as well. Lots of optimization goodness for all you Android developers!</p>
<p style="text-align: center;"><a title="Ant, Eclipse, Maven &amp; Gradle" href="http://blog.newrelic.com/wp-content/uploads/android_logos.png" target="_blank"><img class="aligncenter  wp-image-13075" title="Ant, Eclipse, Maven &amp; Gradle" alt="Ant, Eclipse, Maven &amp; Gradle" src="http://blog.newrelic.com/wp-content/uploads/android_logos.png" width="275" height="203" /></a></p>
<p>It’s super easy to get started:</p>
<p style="padding-left: 30px;">* Install New Relic using your standard build tools and processes<br />
* Debug and release your app in Eclipse just like always<br />
* Build your Maven app with New Relic &#8211; it&#8217;s now as simple as adding a dependency to your application’s pom.xml<br />
* Launch the emulator and see your New Relic data<br />
* Enjoy New Relic support for your shiny new application!</p>
<p>You’ll find separate <a title="New Relic Android support installation instructions" href="https://newrelic.com/docs/mobile-apps/android-installation-and-configuration" target="_blank">installation instructions</a> for Ant, Eclipse, Maven and Gradle in our docs section.  And don’t miss our previous blog post on <a title="New Relic blog post on Gradle" href="http://blog.newrelic.com/2013/06/07/migrating-your-android-app-from-eclipse-to-android-studio/" target="_blank">getting started with Gradle</a>. For an example of how to install Eclipse, see this install video:</p>
<p><iframe name="wistia_embed" src="https://fast.wistia.net/embed/iframe/8emkcs2ydo?endVideoBehavior=reset&amp;playButton=false&amp;playerColor=4cb0bd&amp;version=v1&amp;videoHeight=440&amp;videoWidth=550&amp;volumeControl=true" height="440" width="550" frameborder="0" scrolling="no"></iframe></p>
<p>Don’t wait — log in, deploy and see data like you never have before on <a title="See your New Relic data" href="http://rpm.newrelic.com" target="_blank">New Relic’s mobile section</a>.</p>
<p>The post <a href="http://blog.newrelic.com/2013/06/14/new-relic-goodness-for-android-developers/">Android Developer? We&#8217;ve Got a Special Treat For You</a> appeared first on <a href="http://blog.newrelic.com">New Relic blog</a>.</p><div class="feedflare">
<a href="http://feeds.feedburner.com/~ff/NewRelic?a=EU2STuMnYM4:wrB5Zeh8zEs:yIl2AUoC8zA"><img src="http://feeds.feedburner.com/~ff/NewRelic?d=yIl2AUoC8zA" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/NewRelic?a=EU2STuMnYM4:wrB5Zeh8zEs:V_sGLiPBpWU"><img src="http://feeds.feedburner.com/~ff/NewRelic?i=EU2STuMnYM4:wrB5Zeh8zEs:V_sGLiPBpWU" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/NewRelic?a=EU2STuMnYM4:wrB5Zeh8zEs:F7zBnMyn0Lo"><img src="http://feeds.feedburner.com/~ff/NewRelic?i=EU2STuMnYM4:wrB5Zeh8zEs:F7zBnMyn0Lo" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/NewRelic?a=EU2STuMnYM4:wrB5Zeh8zEs:gIN9vFwOqvQ"><img src="http://feeds.feedburner.com/~ff/NewRelic?i=EU2STuMnYM4:wrB5Zeh8zEs:gIN9vFwOqvQ" border="0"></img></a>
</div><img src="http://feeds.feedburner.com/~r/NewRelic/~4/EU2STuMnYM4" height="1" width="1"/>]]></content:encoded>
			<wfw:commentRss>http://blog.newrelic.com/2013/06/14/new-relic-goodness-for-android-developers/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		<feedburner:origLink>http://blog.newrelic.com/2013/06/14/new-relic-goodness-for-android-developers/</feedburner:origLink></item>
		<item>
		<title>Case Study: Unwired Revolution Gains Full Visibility into Enterprise Environments with New Relic</title>
		<link>http://feedproxy.google.com/~r/NewRelic/~3/hXmy45koEOM/</link>
		<comments>http://blog.newrelic.com/2013/06/12/case-study-unwired-revolution-gains-full-visibility-into-enterprise-environments-with-new-relic/#comments</comments>
		<pubDate>Wed, 12 Jun 2013 17:39:00 +0000</pubDate>
		<dc:creator>Leigh Shevchik</dc:creator>
				<category><![CDATA[Case Study]]></category>
		<category><![CDATA[Company News]]></category>
		<category><![CDATA[Mobile]]></category>

		<guid isPermaLink="false">http://blog.newrelic.com/?p=13059</guid>
		<description><![CDATA[<p>In the world of enterprise mobile apps, user experience is sometimes a secondary consideration. And Unwired Revolution is looking to change that, one client at a time. The company is a mobile solutions integrator specializing in security, management, support, connectivity, and application enablement for enterprise mobile initiatives across all major industries. It has turned much [...]</p><p>The post <a href="http://blog.newrelic.com/2013/06/12/case-study-unwired-revolution-gains-full-visibility-into-enterprise-environments-with-new-relic/">Case Study: Unwired Revolution Gains Full Visibility into Enterprise Environments with New Relic</a> appeared first on <a href="http://blog.newrelic.com">New Relic blog</a>.</p>]]></description>
				<content:encoded><![CDATA[<p>In the world of enterprise mobile apps, user experience is sometimes a secondary consideration. And <a title="Unwired Revolution" href="http://www.unwiredrevolution.com/" target="_blank">Unwired Revolution</a> is looking to change that, one client at a time. The company is a mobile solutions integrator specializing in security, management, support, connectivity, and application enablement for enterprise mobile initiatives across all major industries. It has turned much of its focus towards the development of custom apps that help clients’ internal teams collaborate more productively and effectively.</p>
<p><a title="Unwired Revolution logo" href="http://blog.newrelic.com/wp-content/uploads/unwiredrevolution_logo.png" target="_blank"><img class="alignright  wp-image-13061" style="margin-left: 5px; margin-right: 5px;" title="Unwired Revolution logo" alt="Unwired Revolution logo" src="http://blog.newrelic.com/wp-content/uploads/unwiredrevolution_logo.png" width="152" height="90" /></a>“When we design apps, one of our top priorities is to make the experience fun, fast and simple,” says <a title="Matt Vlasch on Twitter" href="https://twitter.com/mattvlasach" target="_blank">Matt Vlasach</a>, Director of Mobile Integration Services at Unwired Revolution. “There’s no better way to encourage widespread enterprise adoption than to make an app genuinely enjoyable to use.”</p>
<p><span style="font-size: 1.25em;"><strong>Helping Clients Collaborate More Effictively</strong></span><br />
For one client — a major player in the food and beverage industry — Unwired Revolution designed <a title="Unwired Revolution DocLink" href="http://www.unwiredrevolution.com/doclink/" target="_blank">DocLink</a>, a software solution for accessing enterprise content on iOS devices and Windows 7 desktops. With this app, salespeople and other mobile employees can access files and auto-generated reports stored on enterprise servers through a common and very secure RESTful API. Users can subscribe to content they find interesting and that content is then automatically synced to their mobile devices for offline availability.</p>
<p>Another client — a major utility — needed an app to make mobile device management (MDM) a more user-friendly process. Unwired Revolution made it easier for the company to manage devices and maintain security posture without exposing thousands of end users to a complicated ERP backend. “In both of these engagements, we wanted to enable seamless functionality for enterprise users in an attractive, intuitive UI,” says Vlasach. “The ultimate goal was to unleash more productivity by transforming difficult, inefficient processes into engaging work experiences.”</p>
<p><span style="font-size: 1.25em;"><strong>Solving Their Own Performance Issues</strong></span><br />
But an app can only engage users if it performs as expected. During test phases for client projects, Unwired Revolution often had its own share of performance hiccups. “At one point, a pilot end user reported an increase in ‘server errors,’ but we couldn’t identify the source of the problem or reproduce it,” says Vlasach. “Our only option was to review log files and debug traces, which is hardly an efficient use of developers’ time. Besides, we didn’t want to burden our clients with the task of troubleshooting. Our goal is to be proactive — to identify problems before our end users even know that something’s wrong.”</p>
<p>Vlasach was already familiar with New Relic before bringing it to Unwired Revolution. In fact, he’d been using the solution for apps in his side business for nearly a year. “From my own experience, I knew that New Relic could help us address our app performance issues and give us early warning of issues,” he says. “We installed it on our production servers in February 2013, and right away it gave us deeper insight into any errors we encountered going forward.”</p>
<p style="text-align: center;"><a href="http://blog.newrelic.com/wp-content/uploads/unwired_revolution_screenshot.png"><img class="aligncenter  wp-image-13060" title="Unwired Revolution" alt="Unwired Revolution" src="http://blog.newrelic.com/wp-content/uploads/unwired_revolution_screenshot.png" width="596" height="272" /></a></p>
<p><span style="font-size: 1.25em;"><strong>Server Side &amp; Mobile Monitoring</strong></span><br />
Server Monitoring was just the beginning. Vlasch and his team began using New Relic for Mobile Apps as soon as it became available. It immediately gave them greater insight into their mobile app performance. “We got the Mobile iOS SDK up and running in literally five minutes, and we were getting valuable information right away,” he says. “It was amazingly simple: just insert two lines of code, add a framework, then run the app … With New Relic for Mobile Apps, we can clearly see which calls are being made, which ones are failing, how fast the servers are responding, and so on. There’s so much comfort in having instant visibility into our app’s performance — just knowing that everything’s OK.”</p>
<p>New Relic enables Unwired Revolution to identify and address performance issues on a proactive basis — long before those issues impact end users. This lets his team spend their time on something other than troubleshooting. We can spend more time doing something productive rather than chasing down a problem,” he says. “The investment we’re making in New Relic is trivial compared to the time it takes for a team of skilled developers to search for the source of a performance issue. From that perspective alone, the software easily pays for itself.”</p>
<p>And most importantly, better performance means a better experience for Unwired Revolution’s end users. “Our DocLink application is a big hit,” says Vlasach. “Users are saying, ‘This app is fun to use. It makes my work so much easier.’ That’s exactly what we’re going for — and performance plays a huge role in making their experience more enjoyable. At this point, I honestly can’t imagine releasing a mobile app without help from New Relic.”</p>
<p><span style="font-size: 1.25em;"><strong>Learn More</strong></span><br />
Read the <a title="Unwired Revolution Gains Full Visibility  into Enterprise Environments with Server  Side and Mobile App Monitoring from  New Relic" href="http://try.newrelic.com/rs/newrelic/images/NewRelic-UnwiredRevolution-CaseStudy.pdf" target="_blank">full case study</a> to find out how Unwired Revolution gained full visibility into its enterprise environments with New Relic.</p>
<p>The post <a href="http://blog.newrelic.com/2013/06/12/case-study-unwired-revolution-gains-full-visibility-into-enterprise-environments-with-new-relic/">Case Study: Unwired Revolution Gains Full Visibility into Enterprise Environments with New Relic</a> appeared first on <a href="http://blog.newrelic.com">New Relic blog</a>.</p><div class="feedflare">
<a href="http://feeds.feedburner.com/~ff/NewRelic?a=hXmy45koEOM:uHcY8HmeKVY:yIl2AUoC8zA"><img src="http://feeds.feedburner.com/~ff/NewRelic?d=yIl2AUoC8zA" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/NewRelic?a=hXmy45koEOM:uHcY8HmeKVY:V_sGLiPBpWU"><img src="http://feeds.feedburner.com/~ff/NewRelic?i=hXmy45koEOM:uHcY8HmeKVY:V_sGLiPBpWU" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/NewRelic?a=hXmy45koEOM:uHcY8HmeKVY:F7zBnMyn0Lo"><img src="http://feeds.feedburner.com/~ff/NewRelic?i=hXmy45koEOM:uHcY8HmeKVY:F7zBnMyn0Lo" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/NewRelic?a=hXmy45koEOM:uHcY8HmeKVY:gIN9vFwOqvQ"><img src="http://feeds.feedburner.com/~ff/NewRelic?i=hXmy45koEOM:uHcY8HmeKVY:gIN9vFwOqvQ" border="0"></img></a>
</div><img src="http://feeds.feedburner.com/~r/NewRelic/~4/hXmy45koEOM" height="1" width="1"/>]]></content:encoded>
			<wfw:commentRss>http://blog.newrelic.com/2013/06/12/case-study-unwired-revolution-gains-full-visibility-into-enterprise-environments-with-new-relic/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		<feedburner:origLink>http://blog.newrelic.com/2013/06/12/case-study-unwired-revolution-gains-full-visibility-into-enterprise-environments-with-new-relic/</feedburner:origLink></item>
		<item>
		<title>Introducing dPerf – A Distributed Low Impact CPU Profiler for iOS</title>
		<link>http://feedproxy.google.com/~r/NewRelic/~3/Kh6amQflVJA/</link>
		<comments>http://blog.newrelic.com/2013/06/12/introducing-dperf-a-distributed-low-impact-cpu-profiler-for-ios/#comments</comments>
		<pubDate>Wed, 12 Jun 2013 13:30:51 +0000</pubDate>
		<dc:creator>Jared Stanbrough</dc:creator>
				<category><![CDATA[Mobile]]></category>
		<category><![CDATA[Performance Tuning]]></category>
		<category><![CDATA[Product Updates]]></category>
		<category><![CDATA[Top Post]]></category>

		<guid isPermaLink="false">http://blog.newrelic.com/?p=13050</guid>
		<description><![CDATA[<p>A few months ago, we launched an awesome new product – New Relic for Mobile Apps. As with all the products we develop, we wanted it to have a very low footprint on the apps it monitors. We needed a way to measure the impact our Mobile SDK has on our customers’ apps and ensure [...]</p><p>The post <a href="http://blog.newrelic.com/2013/06/12/introducing-dperf-a-distributed-low-impact-cpu-profiler-for-ios/">Introducing dPerf – A Distributed Low Impact CPU Profiler for iOS</a> appeared first on <a href="http://blog.newrelic.com">New Relic blog</a>.</p>]]></description>
				<content:encoded><![CDATA[<p>A few months ago, we launched an awesome new product – <a title="New Relic for Mobile Apps" href="http://newrelic.com/mobile-monitoring" target="_blank">New Relic for Mobile Apps</a>. As with all the products we develop, we wanted it to have a very low footprint on the apps it monitors. We needed a way to measure the impact our Mobile SDK has on our customers’ apps and ensure this impact was as close to zero as possible.</p>
<p>Existing tools weren’t a good fit. Our actual profile kept getting lost in the noise of tools like Instruments.app. We quickly realized we needed something extremely lightweight. And since our Mobile SDK runs on many different types of devices, we knew we needed a tool that could be distributed easily across a device test lab (such as the one our friends at <a title="AppThwack" href="https://appthwack.com/" target="_blank">AppThwack</a> have built).</p>
<p>With those goals in mind, we developed <a title="dPerf" href="http://github.com/newrelic/dPerf" target="_blank">dPerf</a> – a small on-device profiling framework. Metrics collected by the profiler are pushed to a Node.js service with JSON over REST and are stored in a MongoDB collection. The Node service then provides a view that renders the profile data with Google Charts.</p>
<p>And here&#8217;s the best part: New Relic is releasing dPerf as an open source project! It can be found on the <a href="https://github.com/newrelic/dperf">dPerf New Relic Repository</a> on Github. Read on to learn more about how it works.</p>
<p><span style="font-size: 1.25em;"><b>The New Relic iOS SDK</b></span><br />
Before we dive into the technical details of dPerf, let’s talk a little bit about the New Relic iOS SDK.</p>
<p>Our approach to application monitoring has two main phases: instrumentation and reporting. The instrumentation phase collects data about network activities, such as NSURLConnection delegate method calls, into a memory buffer. Then once per minute, the reporting phase sends the contents of the memory buffer to the New Relic server.</p>
<p>It’s important to capture profiles for both phases of execution. This is a pretty easy task. (The profiler just needs a sane clock and to run for more than one minute.) If we know the start times for the application, profiler, agent and agent reporting phase, we can easily identify samples from the different phases.</p>
<p><span style="font-size: 1.25em;"><b>Profiling Strategy</b></span><br />
The general strategy for profiling a system is universal: sample the system at regular intervals. Any overhead incurred by the sampling process itself should be calculated and corrected by obtaining an average profile for the sampling process over a large number of runs, and subtracting this time from the samples.</p>
<p>The sampling interval is a critical parameter for a sampling process. Sampling theory (specifically, the <a title="Nyquist–Shannon sampling theorem" href="http://en.wikipedia.org/wiki/Nyquist%E2%80%93Shannon_sampling_theorem" target="_blank">Nyquist–Shannon sampling theorem</a>) states that we can only accurately sample a process operating at a rate of R by sampling it at a minimum rate of 2R. This minimum rate, 2R, is known as the <a title="Nyquist rate" href="http://en.wikipedia.org/wiki/Nyquist_rate" target="_blank">Nyquist rate</a>. For example, to produce an accurate profile of a system performing an operation once per second, we must sample it twice per second. Sampling at a lower rate misses detail and introduces statistical noise. A good description of the Nyquist rate as it applies to audio sampling can be found <a title="DSP_nyquist.cfm" href="http://www.efunda.com/designstandards/sensors/methods/DSP_nyquist.cfm" target="_blank">here</a>.</p>
<p>It’s ideal to conduct the samples as fast as possible, but higher sampling rates require more system resources. And this defeats the purpose of a lightweight profiling system. A critical task then becomes how to identify the ideal sampling rate to capture all relevant information, while minimizing the impact of the sampling process.</p>
<p>We’ve tested varying sampling rates between 10 – 100 samples per second. And we’ve found that a rate of between 10 – 50 samples per second is enough for most apps that do a lot of network activity. You can find that sampling at a higher rate reveals some interesting ‘jitters’ from external processes such as push notifications, SMS and the like.</p>
<p>In this project, the sampled value is the total CPU time used by the process across all threads, which is an ever-increasing value. By computing the changes between values, we can establish the relative CPU used between sampling periods.</p>
<p><span style="font-size: 1.25em;"><b>What About Instruments.app?</b></span><br />
Instruments.app is an amazing application. For the majority of cases, it’s more than adequate for profiling applications as its memory allocation tracking and reference cycle graphs are great tools for memory profiling. Its value is much more limited for CPU profiling, especially on-device.</p>
<p>Instruments.app is great if you want to aggregate the time spent in a particular method, context switch and system call. Unfortunately, it’s also resource intensive. The performance of method calls will still be accurate relative to one another, but the profile isn’t indicative at all of application performance on-device. Additionally, some handy tools such as the Dispatch instrument are not available when you attach to a process on-device.</p>
<p>Also, Instruments.app doesn’t make it easy to export raw metric data. Let’s say you’re trying to analyze dozens of profiled runs across dozens of devices. You want a simple and automated solution to compare the results.</p>
<p><span style="font-size: 1.25em;"><b>On-Device Profiling Client</b></span><br />
The profiler client has two main components: the periodic timer and the value function that’s being sampled.</p>
<p><span style="font-size: 1.25em;"><b>Creating Fast Timers</b></span><br />
iOS provides a few options for creating periodic timers. The NSTimer class is the most straightforward way to create a timer. NSTimer works reasonably well for timers with long intervals, such as a task that runs each second or more. For sub-second timers, NSTimer starts to become less than ideal. According to the documentation from Apple, NSTimer resolution is limited to around 50 – 100ms, but timers operating on this magnitude can experience a large amount of variability in the time that they actually fire.</p>
<p>The better choice for high resolution timing is to use Grand Central Dispatch (GCD) source timers. These timers are extremely accurate and add a fairly small amount of system load even at intervals around 10ms (100 samples per second). Dispatch source timers also fire at more regular intervals and have less variability than NSTimers. If the application doesn’t require precise timing, you can specify a ‘leeway’ argument when you create dispatch source timers to allow for more variability. For example, a timer can be created with an interval of one minute and leeway of five seconds. In this case, the timer will fire every 60 +/- 5 seconds.</p>
<p>Apple&#8217;s <a title="Apple's Concurrency Programming Guide" href="http://developer.apple.com/library/ios/#documentation/General/Conceptual/ConcurrencyProgrammingGuide/GCDWorkQueues/GCDWorkQueues.html" target="_blank">Concurrency Programming Guide</a> provides an example of creating dispatch source timers:</p>
<pre class="brush: objc; title: ; notranslate">
dispatch_source_t CreateDispatchTimer(uint64_t interval,
                                      uint64_t leeway,
                                      dispatch_queue_t queue,
                                      dispatch_block_t block)
{
    dispatch_source_t timer = dispatch_source_create(DISPATCH_SOURCE_TYPE_TIMER,
                                                     0, 0, queue);
    if (timer)
    {
        dispatch_source_set_timer(timer, dispatch_walltime(NULL, 0), interval, leeway);
        dispatch_source_set_event_handler(timer, block);
        dispatch_resume(timer);
    }
    return timer;
}
</pre>
<p>Using this timer is straightforward:</p>
<pre class="brush: objc; title: ; notranslate">
- (void) start
{
    _dispatchTimer = CreateDispatchTimer((1.0 / _sampleRate) * NSEC_PER_SEC, 0, dispatch_get_main_queue(), ^{
        [self sample];
    });
}
</pre>
<p>This method will create a dispatch timer which fires at _sampleRate times per second. We want it to be as accurate as possible, so a leeway of zero is given. It operates on the main queue and invokes a block that invokes the &#8216;sample&#8217; method.</p>
<p><span style="font-size: 1.25em;"><b>Sampling CPU Usage</b></span><br />
Now that we have a fast and reliable timer, we can turn our attention toward interesting values to sample. We’re currently interested in application speed, so we need a good source for CPU utilization data.</p>
<p>iOS provides a great deal of low level information through the mach kernel task API, which is defined in mach/task.h. Apple has little documentation for these functions on iOS, but analogues exist for other mach-based kernels such as XNU and Darwin. These functions behave in more or less the same way across mach kernels, so documentation and code examples using this API are highly portable to iOS.</p>
<p>To find the aggregate CPU utilization for the application, we perform the following actions:</p>
<p style="padding-left: 30px;">1. Call mach_task_self to obtain the current task.</p>
<p style="padding-left: 30px;">2. Call task_info to retrieve basic info about the task including CPU time from terminated threads.</p>
<p style="padding-left: 30px;">3. Call task_threads to retrieve an array of active threads.</p>
<p style="padding-left: 30px;">4. For each thread, call thread_info which returns accumulated CPU time, and add to total.</p>
<p>Since these are low level kernel interfaces, take care when you allocate and de-allocate memory for the various structures.</p>
<p>The method below is a slightly modified version of the method provided in this <a title="How do you measure actual on-CPU time for an iOS thread?" href="http://stackoverflow.com/a/11659289/2263788" target="_blank">Stack Overflow answer</a>:</p>
<pre class="brush: objc; title: ; notranslate">
- (double)cpuTime
{
    task_t task;
    kern_return_t error;
    mach_msg_type_number_t count;
    thread_array_t thread_table;
    thread_basic_info_t thi;
    thread_basic_info_data_t thi_data;
    unsigned table_size;
    unsigned table_array_size;
    struct task_basic_info ti;
    double total_time;

    task = mach_task_self();
    count = TASK_BASIC_INFO_COUNT;
    error = task_info(task, TASK_BASIC_INFO, (task_info_t)&amp;ti, &amp;count);
    if (error != KERN_SUCCESS) {
        return -1;
    }
    {
        unsigned i;

        //
        // the following times are for threads which have already terminated and gone away.
        //
        total_time = ti.user_time.seconds + ti.user_time.microseconds * 1e-6;
        total_time += ti.system_time.seconds + ti.system_time.microseconds * 1e-6;

        error = task_threads(task, &amp;thread_table, &amp;table_size);

        //
        // failed to retrieve thread list: we can't proceed any further.
        //
        if (error != KERN_SUCCESS) {
            error = mach_port_deallocate(mach_task_self(), task);
            assert(error == KERN_SUCCESS);
            return -1;
        }

        thi = &amp;thi_data;
        table_array_size = table_size * sizeof(thread_array_t);

        //
        // for each active thread, add up thread time
        //
        for (i = 0; i &lt; table_size; ++i) {
            count = THREAD_BASIC_INFO_COUNT;
            error = thread_info(thread_table[i], THREAD_BASIC_INFO, (thread_info_t)thi, &amp;count);

            //
            // if the thread_info call fails, clean up and fail hard.
            // partial results are probably useless.
            //
            if (error != KERN_SUCCESS) {
                for (; i &lt; table_size; ++i) {
                    error = mach_port_deallocate(mach_task_self(), thread_table[i]);
                    assert(error == KERN_SUCCESS);
                }

                error = vm_deallocate(mach_task_self(), (vm_offset_t)thread_table, table_array_size);
                assert(error == KERN_SUCCESS);

                error = mach_port_deallocate(mach_task_self(), task);
                assert(error == KERN_SUCCESS);

                return -1;
            }

            //
            // otherwise, accumulate &amp; continue.
            //
            if ((thi-&gt;flags &amp; TH_FLAGS_IDLE) == 0) {
                total_time += thi-&gt;user_time.seconds + thi-&gt;user_time.microseconds * 1e-6;
                total_time += thi-&gt;system_time.seconds + thi-&gt;system_time.microseconds * 1e-6;
            }

            error = mach_port_deallocate(mach_task_self(), thread_table[i]);
            assert(error == KERN_SUCCESS);
        }

        //
        // deallocate the thread table.
        //
        error = vm_deallocate(mach_task_self(), (vm_offset_t)thread_table, table_array_size);
        assert(error == KERN_SUCCESS);
    }
    if (task != mach_task_self()) {
        error = mach_port_deallocate(mach_task_self(), task);
        assert(error == KERN_SUCCESS);
    }
    return total_time;
}
</pre>
<p><span style="font-size: 1.25em;"><b>Who Profiles the Profiler?</b></span><br />
There is some unavoidable overhead incurred by adding a profiler to an application that can be corrected for with benchmarking. The average time it takes to perform profiling operations is calculated with repeated trials and then used to correct sampled data. This technique should be familiar to many low level and embedded programmers.</p>
<p>The strategy is simple:</p>
<p style="padding-left: 30px;">1. Record a timestamp at the start of benchmarking.</p>
<p style="padding-left: 30px;">2. Perform N trials of the benchmarked operation. This should be a tight loop that does nothing but execute the operation.</p>
<p style="padding-left: 30px;">3. Record a timestamp at the end of benchmarking.</p>
<p style="padding-left: 30px;">4. Calculate elapsed time by subtracting the start timestamp from the end timestamp.</p>
<p style="padding-left: 30px;">5. Divide this elapsed time by N (number of trials) to obtain an average time per operation.</p>
<p>A generalized method for benchmarking could be written such as:</p>
<pre class="brush: objc; title: ; notranslate">
- (uint64_t) benchmarkWithTrials: (uint) trials andBlock: (dispatch_block_t) block
{
    // call the block first, warming up any method call table lookups
    block();

    uint64_t start = mach_absolute_time();
    for(int t = 0; t &lt; trials; t++) {
        block();
    }
    return (mach_absolute_time() - start) / trials;
}
</pre>
<p>Fortunately, the function calls to retrieve the task and thread info are very fast. On an iPhone 5, gathering CPU information for all threads takes on average about 150 microseconds.</p>
<p><span style="font-size: 1.25em;"><b>Profiling Server</b></span><br />
At this point, we have a tool that can record CPU usage efficiently at regular intervals. What should we do with this data?</p>
<p>We could have printed sample values to a console log for analysis or even written a small UI to display the profile after the profiling session was over. A goal of this project was to enable profiling across a variety of devices efficiently and scraping dozens of log files isn’t a scalable solution.</p>
<p>Instead, we wrote a basic client / server architecture. The profiling client buffers sampled data until the profiling session is completed. The data is then translated to JSON and sent to a RESTful Node service over HTTP. Along with the sample data, the JSON structure includes information about the device, a unique identifier for the profiling session, sampling rate and the name of the test performed.</p>
<p>This allows multiple devices to run a variety of profiling tests while reporting back to the same server. Decoupling the system in this way provides a lot of scalability and flexibility in the distribution and timing of tests.</p>
<p>Not including static content, the Node server is made up of only about 70 lines of code. It has two jobs:</p>
<p style="padding-left: 30px;">* Store incoming data into a MongoDB collection.</p>
<p style="padding-left: 30px;">* Serve that data up using Google Charts.</p>
<p>The server handles data posts from profilers, as well as generating charts and data sets for analysis. The following modules are used to accomplish this:</p>
<p style="padding-left: 30px;">* Mongodb: Node driver for MongoDB</p>
<p style="padding-left: 30px;">* Express:  Amazing web framework for REST and MVC mapping</p>
<p style="padding-left: 30px;">* Jade: Powerful templating for dynamic views</p>
<p style="padding-left: 30px;">* stylus and nib: CSS preprocessor</p>
<p style="padding-left: 30px;">* Google Charts: Google JavaScript library for easy chart generation</p>
<p>This <a title="A Simple Website in Node.js with Express, Jade and Stylus" href="http://clock.co.uk/tech-blogs/a-simple-website-in-nodejs-with-express-jade-and-stylus" target="_blank">article</a> is a great tutorial for using some of these modules to build a web app.</p>
<p><span style="font-size: 1.25em;"><b>Distributed Testing with AppThwack</b></span><br />
One of the major challenges of mobile development is ensuring compatibility with the wide variety of devices available on the market. iOS currently runs on 16 different Apple hardware platforms and Android runs on several hundred. Trying to build a test lab to cover all these permutations or perform tests on the various devices would be both cost prohibitive and time consuming.</p>
<p><a title="AppThwack" href="https://appthwack.com/" target="_blank">AppThwack</a> is a young company with an innovative approach to mobile testing. They have an automated testing platform that deploys applications to hundreds of real devices, runs tests and returns all sorts of interesting information. Along with reporting test failures, AppThwack also gathers screenshots and log files from all the devices.</p>
<p>With the AppThwack platform, we were able to deploy dPerf to multiple devices easily. When each device finished its test, it sent the samples to our central test server.</p>
<p><span style="font-size: 1.25em;"><b>Results</b></span><br />
After all of the pieces were in place, it was time to run some tests. To establish a baseline, we first tested an application that was completely idle except for running the New Relic agent and Profiler. Technically, we also ran it without the New Relic agent to get a true baseline, but an empty chart is not very interesting.</p>
<p style="text-align: center;"><a title="Idle Test Phone 6.1.4" href="http://blog.newrelic.com/wp-content/uploads/idle_test_local.png" target="_blank"><img class="aligncenter  wp-image-13052" style="border: 1px solid black;" title="Idle Test Phone 6.1.4" alt="Idle Test Phone 6.1.4" src="http://blog.newrelic.com/wp-content/uploads/idle_test_local.png" width="765" height="166" /></a></p>
<p>This chart clearly shows the New Relic agent reporting after exactly one minute. It&#8217;s pretty fast, too!</p>
<p>When this same idle test was run on the AppThwack platform, the results were a a bit different. One testing option AppThwack provided is to send several hundred random events during the testing period. This caused the &#8216;idle&#8217; moments in the application to appear more jittery than what we saw in first test, which essentially had no events being fired. We also saw some of the AppThwack initialization during application start and the beginning of the random event stream. The New Relic reporting call was still visible when its timer fired after one minute.</p>
<p style="text-align: center;"><a title="Idle Test iPhone 6.1.3" href="http://blog.newrelic.com/wp-content/uploads/idle_test_thwack.png" target="_blank"><img class="aligncenter  wp-image-13053" style="border: 1px solid black;" title="Idle Test iPhone 6.1.3" alt="Idle Test iPhone 6.1.3" src="http://blog.newrelic.com/wp-content/uploads/idle_test_thwack.png" width="763" height="167" /></a></p>
<p>Next, we checked the behavior of an application generating a bit of network traffic. This test performed a HTTP request to the highly useful <a title="httpstat.us" href="http://httpstat.us" target="_blank">httpstat.us</a> site every second. We began with a plain old HTTP 200 OK request.</p>
<p style="text-align: center;"><a title="200 1rpm Test iPad" href="http://blog.newrelic.com/wp-content/uploads/200_1rpm.png" target="_blank"><img class="aligncenter  wp-image-13054" style="border: 1px solid black;" title="200 1rpm Test iPad" alt="200 1rpm Test iPad" src="http://blog.newrelic.com/wp-content/uploads/200_1rpm.png" width="771" height="167" /></a></p>
<p>We definitely saw a periodic process here, mixed in with the &#8216;noise&#8217; from the random event stream. It&#8217;s interesting to note that even at this point in testing, the New Relic agent used so little CPU that it was indistinguishable from the other network traffic.</p>
<p>Ramping up the network traffic to 5 requests per second, we saw a familiar pattern. The chart looked essentially the same as the 1 request per second, but the periodic process was multiplied. The New Relic reporting call was somewhat visible here, as a &#8216;thicker&#8217; line around 60 seconds.</p>
<p style="text-align: center;"><a title="200 5rpm Test iPad" href="http://blog.newrelic.com/wp-content/uploads/200_5rpm.png" target="_blank"><img class="aligncenter  wp-image-13055" style="border: 1px solid black;" title="200 5rpm Test iPad" alt="200 5rpm Test iPad" src="http://blog.newrelic.com/wp-content/uploads/200_5rpm.png" width="771" height="167" /></a></p>
<p>Next we moved on to an application that used more CPU resources. The chart below shows an application that queries the U.S. Geological Survey website for a GeoJSON data set of all the 2.5 magnitude earthquakes that occurred in the last month. After the request was complete, the GeoJSON was decoded. This process repeated every five seconds. The JSON payload size was quite large &#8212; roughly 600 kilobytes &#8212; so this was also a good test for handling of large HTTP responses.</p>
<p style="text-align: center;"><a title="USGS Parse Test" href="http://blog.newrelic.com/wp-content/uploads/usgs_5sec.png" target="_blank"><img class="aligncenter  wp-image-13056" title="USGS Parse Test" alt="USGS Parse Test" src="http://blog.newrelic.com/wp-content/uploads/usgs_5sec.png" width="772" height="167" /></a></p>
<p>Here the periodic process was quite visible and by the &#8216;thickness&#8217; of the spikes we saw that the parsing took longer to complete &#8212; about a second or so.</p>
<p>The final verdict was that the New Relic SDK added only a tiny bit of overhead &#8212; about 10 – 20ms on average. And this overhead was only detectable in an application that was mostly idle, which is a rare case indeed.</p>
<p><span style="font-size: 1.25em;"><b>Source Code</b></span><br />
Again, if you’re interested in trying out dPerf for yourself, you can find the source for the profiling system in the <a title="dPerf New Relic repository" href="http://github.com/newrelic/dPerf" target="_blank">dPerf New Relic repository</a> on GitHub. We hope you find it as useful as we did. Feel free to use and enhance this tool to suit your specific needs. Got some cool changes that you want to share? Send us a pull request!</p>
<p>The post <a href="http://blog.newrelic.com/2013/06/12/introducing-dperf-a-distributed-low-impact-cpu-profiler-for-ios/">Introducing dPerf – A Distributed Low Impact CPU Profiler for iOS</a> appeared first on <a href="http://blog.newrelic.com">New Relic blog</a>.</p><div class="feedflare">
<a href="http://feeds.feedburner.com/~ff/NewRelic?a=Kh6amQflVJA:FEtFi7sg428:yIl2AUoC8zA"><img src="http://feeds.feedburner.com/~ff/NewRelic?d=yIl2AUoC8zA" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/NewRelic?a=Kh6amQflVJA:FEtFi7sg428:V_sGLiPBpWU"><img src="http://feeds.feedburner.com/~ff/NewRelic?i=Kh6amQflVJA:FEtFi7sg428:V_sGLiPBpWU" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/NewRelic?a=Kh6amQflVJA:FEtFi7sg428:F7zBnMyn0Lo"><img src="http://feeds.feedburner.com/~ff/NewRelic?i=Kh6amQflVJA:FEtFi7sg428:F7zBnMyn0Lo" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/NewRelic?a=Kh6amQflVJA:FEtFi7sg428:gIN9vFwOqvQ"><img src="http://feeds.feedburner.com/~ff/NewRelic?i=Kh6amQflVJA:FEtFi7sg428:gIN9vFwOqvQ" border="0"></img></a>
</div><img src="http://feeds.feedburner.com/~r/NewRelic/~4/Kh6amQflVJA" height="1" width="1"/>]]></content:encoded>
			<wfw:commentRss>http://blog.newrelic.com/2013/06/12/introducing-dperf-a-distributed-low-impact-cpu-profiler-for-ios/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		<feedburner:origLink>http://blog.newrelic.com/2013/06/12/introducing-dperf-a-distributed-low-impact-cpu-profiler-for-ios/</feedburner:origLink></item>
	</channel>
</rss>
