JXInsight/Simz – It’s the Application not the Process that’s important
During a recent talk on JVM Performance – Past, Present and Predicted in which I gave a brief demonstration of JXInsight/Simz in the final moments in discussing how to manage applications I made the statement that it was time we made the application and its activities the focus of our monitoring and management initiatives and not the OS process or the network for the most part though naturally consideration needs to be given to both the logical and physical design. Whilst the JXInsight/Simz service does allow one to determine the process of a simulated thread within its near real-time application replay runtime it is the threads and their activities (named probes => methods) that are given center stage as well as the metered resource usage recorded. This is especially relevant in discussing cloud computing elasticity with nodes being provisioned and decommissioned at fine granularities and JVM runtimes starting and stopping even more frequently as applications scale up and down in response to dynamic workload demands. It is also relevant when looking at Platform-as-a-Service (PaaS) in which the concept of a distinct identifiable process is all but lost.
One line of thought (and analogy) I have used to help with this argument is to discuss how companies report their size outside of financials. One typically dimension is the global head count reflecting on some implied capacity to respond to customer product and service needs. Rarely does a company list the number of office blocks that house employees though an international/local presence might be emphasized in adverts. Employees (and systems) get work done (directly or indirectly) whereas buildings offer a efficient means to share/consume/coordinate space, infrastructure and supporting services.

When companies think of expansion it is generally the workforce that comes before offices & facilities. Only when new (or proposed) additions to the workforce cannot be accommodated does management start looking at increasing office capacity. The same also applies to how a company organizes and manages itself. And this is how we should views applications (and their activities) alongside operating system processes. Managing applications by way of process monitoring is kinda like managing a workforce by counting the office lights turned on at each site? Processes are a means to consume local resources and coordinate such local interactions reflecting more of the organizational aspects of the software. It is the threads and executing activity (code) that service requests and respond to events that represent the application behavior which should be monitored and managed first and foremost.

With this in mind it is easy to see why when it comes to application performance monitoring and capacity management that process is for the most part a largely redundant if not an irrelevant element in an application management model (especially in the cloud). When it comes to software observation across hundreds or thousands of transient machines and processes why not have a single pane of glass on a single process that replays / simulates the work of thousands of threads irrespective of location. A kind of matrix in which the streams of a software process are played out in another software process – all together and in near realtime.














































































































