Search Results

Search found 5290 results on 212 pages for 'refresh rate'.

Page 82/212 | < Previous Page | 78 79 80 81 82 83 84 85 86 87 88 89  | Next Page >

  • Palm take-over watch

    This is just in: HTC is said to be considering taking over Palm. That would be an interesting development, since HTC is one of the few parties we can trust not messing up webOS but actually using it as it’s supposed to work.Palm has an absolutely first-rate product in webOS, especially its user interface. As far as I’m concerned the Palm Pre is the only phone that’s (almost?) on a par with the iPhone when it comes to UI, although the system is completely different (and has supported multitasking...Did you know that DotNetSlackers also publishes .net articles written by top known .net Authors? We already have over 80 articles in several categories including Silverlight. Take a look: here.

    Read the article

  • Entity Framework 4.0 POCO Classes and Data Services

    If you've flipped on the POCO (Plain Ol' CLR Objects) code generation T4 templates for Entity Framework to enable testing or just 'cuz you like the code better, you might find that you lack the ability to expose that same model via Data Services as OData (Open Data). If you surf to the feed, you'll likely see something like this: The XML page cannot be displayed Cannot view XML input using XSL style sheet. Please correct the error and then click the Refresh button, or try again later....Did you know that DotNetSlackers also publishes .net articles written by top known .net Authors? We already have over 80 articles in several categories including Silverlight. Take a look: here.

    Read the article

  • Entity Framework 4.0 POCO Classes and Data Services

    If you've flipped on the POCO (Plain Ol' CLR Objects) code generation T4 templates for Entity Framework to enable testing or just 'cuz you like the code better, you might find that you lack the ability to expose that same model via Data Services as OData (Open Data). If you surf to the feed, you'll likely see something like this: The XML page cannot be displayed Cannot view XML input using XSL style sheet. Please correct the error and then click the Refresh button, or try again later....Did you know that DotNetSlackers also publishes .net articles written by top known .net Authors? We already have over 80 articles in several categories including Silverlight. Take a look: here.

    Read the article

  • How to remove tearing in videos with Nvidia driver?

    - by Daimon
    I'm using ubuntu 11.10 as my HTPC OS on ION board. Tearing was always a big problem but this guide (http://www.omgubuntu.co.uk/2010/01/how-to-fix-video-tearing-in-videos-nvidia-ubuntu/) used to solve it in previous versions. I mean it used to because it doesn't solve it anymore. I tried making same changes (although compiz config is little different and same options are in different panels) but with no success. I also tried to manually set resolution and refresh rate of HDTV in nvidia settings - no changes at all. I know that open source drivers would solve a problem but it's not an option because I need VDPAU acceleration. I've also read that completely disabling of Composite solves the problem - can't do that because compizconfig-settings-manager crashes on attempt. More info about setup: Ubuntu 11.10 64bit Nvidia ION board newest official version of proprietary driver SMplayer with vdpau settings Full HD HDTV

    Read the article

  • VPN disconnected: resolv.conf not refreshed

    - by cwall
    I connect to VPN using vpnc. When VPN disconnects, either via time out or the session limit is reached, VPN is terminated, but resolve.conf continues to contain references to my VPN network. resolv.conf before VPN is connected: nameserver 127.0.0.1 search mylocalnetwork resolv.conf after VPN is connected and remains once VPN is lost: nameserver X.X.X.X nameserver X.X.X.Z nameserver 127.0.0.1 search internal.mycompany.com mylocalnetwork In 10.04, when VPN lost, I'd run this script to refresh resolve.conf: 7$ cat bin/refreshResolvconf.sh #!/bin/bash #if [ -e /etc/resolvconf/run/interface/tun0 -a "`pidof vpnc`" == "" ]; then /sbin/resolvconf -d tun0; fi if [ -e /etc/resolvconf/run/interface/tun0 -a "`pidof vpnc`" == "" ] then /sbin/resolvconf -d tun0; echo "Refreshed resolv.conf" fi But, resolveconf changed in 12.04 changed, so this script is no longer applicable. To resolve, I manually edit resolve.conf or turn off/on my connection via "gnome-control-center network". Anyone else have the same problem? How can resolv.conf be updated post-VPN disconnect?

    Read the article

  • CPU Usage in Very Large Coherence Clusters

    - by jpurdy
    When sizing Coherence installations, one of the complicating factors is that these installations (by their very nature) tend to be application-specific, with some being large, memory-intensive caches, with others acting as I/O-intensive transaction-processing platforms, and still others performing CPU-intensive calculations across the data grid. Regardless of the primary resource requirements, Coherence sizing calculations are inherently empirical, in that there are so many permutations that a simple spreadsheet approach to sizing is rarely optimal (though it can provide a good starting estimate). So we typically recommend measuring actual resource usage (primarily CPU cycles, network bandwidth and memory) at a given load, and then extrapolating from those measurements. Of course there may be multiple types of load, and these may have varying degrees of correlation -- for example, an increased request rate may drive up the number of objects "pinned" in memory at any point, but the increase may be less than linear if those objects are naturally shared by concurrent requests. But for most reasonably-designed applications, a linear resource model will be reasonably accurate for most levels of scale. However, at extreme scale, sizing becomes a bit more complicated as certain cluster management operations -- while very infrequent -- become increasingly critical. This is because certain operations do not naturally tend to scale out. In a small cluster, sizing is primarily driven by the request rate, required cache size, or other application-driven metrics. In larger clusters (e.g. those with hundreds of cluster members), certain infrastructure tasks become intensive, in particular those related to members joining and leaving the cluster, such as introducing new cluster members to the rest of the cluster, or publishing the location of partitions during rebalancing. These tasks have a strong tendency to require all updates to be routed via a single member for the sake of cluster stability and data integrity. Fortunately that member is dynamically assigned in Coherence, so it is not a single point of failure, but it may still become a single point of bottleneck (until the cluster finishes its reconfiguration, at which point this member will have a similar load to the rest of the members). The most common cause of scaling issues in large clusters is disabling multicast (by configuring well-known addresses, aka WKA). This obviously impacts network usage, but it also has a large impact on CPU usage, primarily since the senior member must directly communicate certain messages with every other cluster member, and this communication requires significant CPU time. In particular, the need to notify the rest of the cluster about membership changes and corresponding partition reassignments adds stress to the senior member. Given that portions of the network stack may tend to be single-threaded (both in Coherence and the underlying OS), this may be even more problematic on servers with poor single-threaded performance. As a result of this, some extremely large clusters may be configured with a smaller number of partitions than ideal. This results in the size of each partition being increased. When a cache server fails, the other servers will use their fractional backups to recover the state of that server (and take over responsibility for their backed-up portion of that state). The finest granularity of this recovery is a single partition, and the single service thread can not accept new requests during this recovery. Ordinarily, recovery is practically instantaneous (it is roughly equivalent to the time required to iterate over a set of backup backing map entries and move them to the primary backing map in the same JVM). But certain factors can increase this duration drastically (to several seconds): large partitions, sufficiently slow single-threaded CPU performance, many or expensive indexes to rebuild, etc. The solution of course is to mitigate each of those factors but in many cases this may be challenging. Larger clusters also lead to the temptation to place more load on the available hardware resources, spreading CPU resources thin. As an example, while we've long been aware of how garbage collection can cause significant pauses, it usually isn't viewed as a major consumer of CPU (in terms of overall system throughput). Typically, the use of a concurrent collector allows greater responsiveness by minimizing pause times, at the cost of reducing system throughput. However, at a recent engagement, we were forced to turn off the concurrent collector and use a traditional parallel "stop the world" collector to reduce CPU usage to an acceptable level. In summary, there are some less obvious factors that may result in excessive CPU consumption in a larger cluster, so it is even more critical to test at full scale, even though allocating sufficient hardware may often be much more difficult for these large clusters.

    Read the article

  • Frame timing for GLFW versus GLUT

    - by linello
    I need a library which ensures me that the timing between frames are more constant as possible during an experiment of visual psychophics. This is usually done synchronizing the refresh rate of the screen with the main loop. For example if my monitor runs at 60Hz I would like to specify that frequency to my framework. For example if my gameloop is the following void gameloop() { // do some computation printDeltaT(); Flip buffers } I would like to have printed a constant time interval. Is it possible with GLFW?

    Read the article

  • Music server + Banshee

    - by slosd
    I'm currently trying to figure out some kind of set-up for my music collection. The music collection is located on my "main PC" and I'm using Banshee to play/manage the music. Since I'm often at a different location where I use my laptop I have a FTP server running on my main PC, use curlftpfs to mount the music in /home/username/Music and sync the Banshee DB/configuration via Dropbox. The problem at the moment is that Banshee skips songs very often when the connection is a little slower. I've been looking at some servers like Ampache but they are not really an option since they don't let me use Banshee (which means I have no ability to change metadata or rate songs). Syncing the whole collection to my laptop isn't an option either because of its size. It would be great if you had some ideas how to make my current set-up more reliable or maybe know an alternative.

    Read the article

  • Interpolation gives the appearance of collisions

    - by Akroy
    I'm implementing a simple 2D platformer with a constant speed update of the game logic, but with the rendering done as fast as the machine can handle. I interpolate positions between actual game updates by just using the position and velocity of objects at the last update. This makes things look really smooth in general, but when something hits a wall/floor, it appears to go through the wall for a moment before being positioned correctly. This is because the interpolator is not taking walls into account, so it guesses the position into walls until the actual game update fixes it. Are there any particularly elegant solutions for this? Simply increasing the update rate seems like a band-aid solution, and I'm trying to avoid increasing the system reqs. I could also check for collisions in the actual interpolator, but that seems like heavy overhead, and then I'm no longer dividing the drawing and the game updating.

    Read the article

  • A good way to build a game loop in OpenGL

    - by Jeff
    I'm currently beginning to learn OpenGL at school, and I've started making a simple game the other day (on my own, not for school). I'm using freeglut, and am building it in C, so for my game loop I had really just been using a function I made passed to glutIdleFunc to update all the drawing and physics in one pass. This was fine for simple animations that I didn't care too much about the frame rate, but since the game is mostly physics based, I really want to (need to) tie down how fast it's updating. So my first attempt was to have my function I pass to glutIdleFunc (myIdle()) to keep track of how much time has passed since the previous call to it, and update the physics (and currently graphics) every so many milliseconds. I used timeGetTime() to do this (by using <windows.h>). And this got me to thinking, is using the idle function really a good way of going about the game loop? My question is, what is a better way to implement the game loop in OpenGL? Should I avoid using the idle function?

    Read the article

  • From Transactions To Engagement

    - by David Dorf
    I've mentioned in the past that Oracle has invested quite a bit in acquiring social companies to build out its Social Relationship Management suite.  The concept is to shift away from transactions and towards engagement.  Social media represents a great opportunity to engage with customers, learn what they want, and personalize the shopping experience for them. I look at SRM as the bridge between traditional CRM and CX.  If you're looking for ideas, check out Five Social Retailing Suggestions and Social Analytics and the Customer.  There are lots of ways to leverage social media to enhance the customer experience and thus drive more sales. My friends over at 8th Bridge have just released their Social IQ report in which they rate retailers on their social capabilities.  They also produced a nice infographic so you can consume the data quickly, but I'd still encourage you to download the full report. Retailers interested in upping their SRM abilities should definitely stop by the Oracle booth at NRF in January.

    Read the article

  • Infrared usb adapter not hot pluggable?

    - by A. Goossens
    For transferring exercise files from my Polar heart rate monitor i use the software Protrainer 5 with an external infrared usb adapter. Using Wine to run Protrainer 5 and some adjustments mentioned here (using irda-utils) i managed to make it work. Well, sort of: every time i want to transfer exercise files and the adapter is not plugged in i have to reboot my laptop with the usb adapter plugged in to make it work. Since i have a laptop it unfortunately is no option to just always leave the adapter in. It seems to me that the usb adapter isn't hot pluggable (which seems odd for a usb device) or there must be another problem. Polar WebLink (other software to transfer exercise files) experiences the same issue. Can anyone help me to fix this problem? Infrared usb adapter: Polar IRDA USB adapter OS: Ubuntu 12.10 (64-bit) Hardware: Lenovo Thinkpad T500

    Read the article

  • Cannot Update through Manager or Terminal/ Software Center Does Not Work

    - by BROBA
    I installed Tor a few days ago via the terminal. I deleted some hashtags in the gedit polipo, and changed my proxy settings in chrome, but was unable to make it work and have since changed all of it back. I then downloaded the Tor browser bundle which works great, but ever since then have been unable to download updates or new software. The update manager says to "check internet connection" and the software center displays a mostly blank screen under apps like "rhythmbox" and just says "available from main source" when I click on "use this source" a refresh symbol appears on the upper right corner of the software center for a split second, and then nothing happens. The app does not download and isn't available in the dash. When I try via the terminal it says it's unable to connect to my ip address. I tried changing the server and unchecking all the repository options for software sources, all to no avail. WHAT DID I DO?????

    Read the article

  • Network strange problem

    - by Ali
    I have a CPanel server with 5 IPs and a few domains. During night, access to main domain through HTTP return 324 no response many times. After several refresh it comes but many assets won't load and return 324. Using HTTPS is fine. During day HTTP is also fine. But another domain on that very sever works fine all the day through HTTP. The server DNS are ns1 and ns2 of the first domain. Second domain is on the shared IP and first domain has a dedicated IP. I cant resolve the problem :( and appreciate any help so much!

    Read the article

  • Wireless speed drops over time and doesn't get up if not reconnected

    - by Vili Lehto
    I am using Ubuntu 12.10 64bit and I have a Asus PCE-N15 wireless card(in PCI-E slot). The problem is that first when I connect to my WiFi network the speed is just fine, and actually my link speed never drops, it shows a solid 150mb/s+ link speed and good signal. But the download and upload speeds drop dramatically after couple minutes of use and I have to reconnect to fix this. Network is type IEEE 802.11bgn and uses WPA2/AES encryption. I don't have similar problems on the windows side, and the network is working fine on every other device. iwconfig shows this: wlan0 IEEE 802.11bgn ESSID:"WLAN-AP" Mode:Managed Frequency:2.412 GHz Access Point: 00:1E:AB:05:EF:31 Bit Rate=300 Mb/s Tx-Power=20 dBm Retry long limit:7 RTS thr=2347 B Fragment thr:off Encryption key:off Power Management:off Link Quality=61/70 Signal level=-49 dBm Rx invalid nwid:0 Rx invalid crypt:0 Rx invalid frag:0 Tx excessive retries:0 Invalid misc:2 Missed beacon:0 So the question is: Is there a way to fix this? Thanks in advance.

    Read the article

  • How does a collision engine work?

    - by JXPheonix
    Original question: Click me How exactly does a collision engine work? This is an extremely broad question. What code keeps things bouncing against each other, what code makes the player walk into a wall instead of walk through the wall? How does the code constantly refresh the players position and objects position to keep gravity and collision working as it should? If you don't know what a collision engine is, basically it's generally used in platform games to make the player acutally hit walls and the like. There's the 2D type and the 3D type, but they all accomplish the same thing: collision. So, what keeps a collision engine ticking?

    Read the article

  • Silverlight 4 Twitter Client &ndash; Part 7

    - by Max
    Download this article as a PDF Welcome back :) This week we are going to look at something more exciting and a much required feature for any twitter client – auto refresh so as to show new status updates. We are going to achieve this using Silverlight 4 Timers and a bit and refresh our datagrid every 2 minutes to show new updates. We will do this so that we do only minimal request to the twitter api, so that twitter does not block us – there is a limit of 150 request an hour. Let us get started now. Also we will get the profile user id hyperlinked, so that when ever the user click on it, we will take them to their twitter page. Also it was a pain to always run this application by pressing F5, then it would open in a browser you would have to right click uninstall and install it again to see any changes. All this and yet we were not able to debug it :( Now there is a solution for this to run a silverlight application directly out of browser and yet have the debug feature. Super cool, here is how. Right on the Silverlight project and go to debug and then select the Out-Of-Browser application option and choose the *.Web project. Then just right click on the SL project and set as Startup Project. There you go, now every time you press F5, it will automatically run out of browser and still have the debug options. I go to know about this after some binging. Now let us jump to the core straight away. 1) To get the user id hyperlinked, we need to have a DataGridTemplateColumn and within that have a HyperLinkButton. The code for this will  be <data:DataGridTemplateColumn> <data:DataGridTemplateColumn.CellTemplate> <DataTemplate> <HyperlinkButton Click="HyperlinkButton_Click" Content="{Binding UserName}" TargetName="_blank" ></HyperlinkButton> </DataTemplate> </data:DataGridTemplateColumn.CellTemplate> </data:DataGridTemplateColumn> 2) Now let us look at how we are getting this done by looking into HyperlinkButton_Click event handler. There we will dynamically set the NavigateUri to the twitter page. I tried to do this using some binding, eval like stuff as in ASP.NET, but no luck! private void HyperlinkButton_Click(object sender, RoutedEventArgs e) { HyperlinkButton hb = (HyperlinkButton)e.OriginalSource; hb.NavigateUri = new Uri("http://twitter.com/" + hb.Content.ToString(), UriKind.Absolute); } 3) Now we need to switch on our Timer right in the OnNavigated to event on our SL page. So we need to modify our OnNavigated event to some thing like below: protected override void OnNavigatedTo(NavigationEventArgs e) { image1.Source = new BitmapImage(new Uri(GlobalVariable.profileImage, UriKind.Absolute)); this.Title = GlobalVariable.getUserName() + " - Home"; if (!GlobalVariable.isLoggedin()) this.NavigationService.Navigate(new Uri("/Login", UriKind.Relative)); else { currentGrid = "Timeline-Grid"; TwitterCredentialsSubmit(); myDispatcherTimer.Interval = new TimeSpan(0, 0, 0, 60, 0); myDispatcherTimer.Tick += new EventHandler(Each_Tick); myDispatcherTimer.Start(); } } I use a global string – here it is currentGrid variable to indicate what is bound in the datagrid so that after every timer tick, I can rebind the latest data to it again. Like I will only rebind the friends timeline again if the data grid currently holds it and I’ll only rebind the respective list status again in the data grid, if already a list status is bound to the data grid. In the above timer code, its set to trigger the Each_Tick event handler every 1 minute (60 seconds). TimeSpan takes in (days, hours, minutes, seconds, milliseconds). 4) Now we need to set the list name in the currentGrid variable when a list button is clicked. So add the code line below to the list button event handler currentGrid = currentList = b.Content.ToString(); 5) Now let us see how Each_Tick event handler is implemented. public void Each_Tick(object o, EventArgs sender) { if (!currentGrid.Equals("Timeline-Grid")) getListStatuses(currentGrid); else { WebRequest.RegisterPrefix("https://", System.Net.Browser.WebRequestCreator.ClientHttp); WebClient myService = new WebClient(); myService.AllowReadStreamBuffering = true; myService.UseDefaultCredentials = false; myService.Credentials = new NetworkCredential(GlobalVariable.getUserName(), GlobalVariable.getPassword()); myService.DownloadStringCompleted += new DownloadStringCompletedEventHandler(TimelineRequestCompleted); myService.DownloadStringAsync(new Uri("https://twitter.com/statuses/friends_timeline.xml")); } } If the data grid hold friends timeline, I just use the same bit of code we had already to bind the friends timeline to the data grid. Copy Paste. But if it is some list timeline that is bound in the datagrid, I then call the getListStatus method with the currentGrid string which will actually be holding the list name. 6) I wanted to make the hyperlinks inside the status message as hyperlinks and when the user clicks on it, we can then open that link. I tried using a convertor and using a regex to recognize a url and wrap it up with a href, but that is not gonna work in silverlight textblock :( Anyways that convertor code is in the zip file. 7) You can get the complete project files from here. 8) Please comment below for your doubts, suggestions, improvements. I will try to reply as early as possible. Thanks for all your support. Technorati Tags: Silverlight 4,Datagrid,Twitter API,Silverlight Timer

    Read the article

  • Advertising Campaign Bidding Network

    - by David
    I hope this is the correct stackexchange to post on. Seems to most relevant. I'm looking for more ways to monetize my site. I'm already using the usual Google Adsense, tradedoublers, ad networks, etc. What I want to know, is if anyone knows of a service/network out there (similar to tradedoubler), which allows you to accept (or bid) on campaigns (primarily CPM based). For example: I log in, I get a list of advertising campaigns that are available and the prices they are willing to pay or I can put a bid in with imp count and cpm rate. I'm looking for something ideally europe or UK based, but im open to others. Thanks!

    Read the article

  • Application development : method to manage backgound process

    - by Simon Dubois
    I am developing an application with different behavior depending on the arguments : - "-config" starts a Gtk window to change options, start and close the daemon. - "-daemon" starts a background process that does something every X minutes. I already know how to use fork/system/exec etc... But I would like to know the main logic of such application to : - restart or refresh the daemon when configuration change. - keep only one instance of the daemon. I have red that killing the daemon to restart it is not a clean way to do. How other applications do ? (ubuntuone, weather forecast, rss feed working with notification area) Thanks for your help. PS : I don't want to create a system-wide daemon, just a user application with a background process.

    Read the article

  • Oracle Fusion HCM Gains Traction and Customer Recognition

    - by Scott Ewart
    Oracle Fusion HCM Gains Traction and Customer Recognition at the HRO Summit Europe in Barcelona Audience voted Oracle Fusion Human Capital Management as best in Most Reliable, Most Innovative and Best in Class. During the annual European HRO Summit in Barcelona, HRO buyers, service providers, third party advisors and other attendees were visibly impressed with the Fusion HCM product stack. Following the “present-off” among four technology vendors, Oracle was voted first in the following categories: Which technology could best suit the needs for your company Which technology do you think came across as the most reliable Which technology offers the most innovation Based on what you heard today, which technology presentation would you rate as best in class Oracle was voted second in the two other remaining categories Click here for the full article ==> http://bit.ly/sxC3tX

    Read the article

  • Track those visitors who come through a particular link

    - by busybee235
    I want to track visitors who come to my site through a particular link. For example, those visitors coming from http://www.domain.com/abc123, I can get their pageviews, time on site, bounce rate, referrer pages per visit etc. After that I can store that info into by database on daily basis. Can anyone suggest any service or api or any software for the same? I have used Google Analytics utm tags that work straight well for my requirement but I don't know how many links I can track with it. I have around 80-100 links to track a day and the number of links will be increasing. I couldn't find any documentation regarding limit of campaigns in GA. If there's no such limit, I can start this project. Thanks

    Read the article

  • What is the best way to promote a programming blog?

    - by paul
    (The guys from 'Programmers' referred me here...) How do you promote your programming blog? I recently started http://blackforestcoder.blogspot.com/ to record my progress working with new technologies and ideas. The main aim being to provide a list of pitfalls and solutions and also to get feedback from readers. Since I set it up 10 days ago I have only had about 2-3 hits even though Google is supposed to be indexing it. How might I boost the hit rate?

    Read the article

  • Using EPEL repos with Oracle Linux

    - by wcoekaer
    There's a Fedora project called EPEL which hosts a set of additional packages that can be installed on top of various distributions such as Red Hat Enterprise Linux, CentOS, Scientific Linux and of course also Oracle Linux. These packages are not distributed by the distribution vendor and as such also not supported by the vendors (including Oracle) however for users that want to pick up some extras that are useful, it's very easy to do this. All you need to do is download the EPEL RPM from the website, install it on Oracle Linux 5 or Oracle Linux 6 and run yum install or yum search to get the packages. example : # wget http://download.fedoraproject.org/pub/epel/6/i386/epel-release-6-5.noarch.rpm # rpm -ivh epel-release-6-5.noarch.rpm # yum repolist Loaded plugins: refresh-packagekit, rhnplugin repo id repo name status epel Extra Packages for Enterprise Linux 6 - x86_64 7,124 The folks that build these repositories are doing a great job at adding very useful packages. They are free, but also unsupported of course.

    Read the article

  • CRM Goes to School, Supports Enrollment Growth

    - by Tony Berk
    At Post University in Waterbury, CT, the focus is on the student. Generally, the first interaction from a potential student is a lead, which can come from a variety of sources. Any delay in following up with the interested student (the lead) affects the conversion success rate, i.e., the likelihood of enrollment. By implementing Oracle CRM On Demand, Post University automated the admissions process so the admissions counselors are in direct contact with the students and eliminated many manual steps. The admissions and marketing teams, as well as the students, benefit from the new streamlined process. Up next, Post University, plans to increase the efficiency of the student retention processes with the expansion of Oracle CRM On Demand. Take a look at the video to learn more about Post University's Oracle CRM On Demand implementation: Congrats to Post University, and Apex IT, their implementation partner, on the successful implementation!

    Read the article

  • Performance triage

    - by Dave
    Folks often ask me how to approach a suspected performance issue. My personal strategy is informed by the fact that I work on concurrency issues. (When you have a hammer everything looks like a nail, but I'll try to keep this general). A good starting point is to ask yourself if the observed performance matches your expectations. Expectations might be derived from known system performance limits, prototypes, and other software or environments that are comparable to your particular system-under-test. Some simple comparisons and microbenchmarks can be useful at this stage. It's also useful to write some very simple programs to validate some of the reported or expected system limits. Can that disk controller really tolerate and sustain 500 reads per second? To reduce the number of confounding factors it's better to try to answer that question with a very simple targeted program. And finally, nothing beats having familiarity with the technologies that underlying your particular layer. On the topic of confounding factors, as our technology stacks become deeper and less transparent, we often find our own technology working against us in some unexpected way to choke performance rather than simply running into some fundamental system limit. A good example is the warm-up time needed by just-in-time compilers in Java Virtual Machines. I won't delve too far into that particular hole except to say that it's rare to find good benchmarks and methodology for java code. Another example is power management on x86. Power management is great, but it can take a while for the CPUs to throttle up from low(er) frequencies to full throttle. And while I love "turbo" mode, it makes benchmarking applications with multiple threads a chore as you have to remember to turn it off and then back on otherwise short single-threaded runs may look abnormally fast compared to runs with higher thread counts. In general for performance characterization I disable turbo mode and fix the power governor at "performance" state. Another source of complexity is the scheduler, which I've discussed in prior blog entries. Lets say I have a running application and I want to better understand its behavior and performance. We'll presume it's warmed up, is under load, and is an execution mode representative of what we think the norm would be. It should be in steady-state, if a steady-state mode even exists. On Solaris the very first thing I'll do is take a set of "pstack" samples. Pstack briefly stops the process and walks each of the stacks, reporting symbolic information (if available) for each frame. For Java, pstack has been augmented to understand java frames, and even report inlining. A few pstack samples can provide powerful insight into what's actually going on inside the program. You'll be able to see calling patterns, which threads are blocked on what system calls or synchronization constructs, memory allocation, etc. If your code is CPU-bound then you'll get a good sense where the cycles are being spent. (I should caution that normal C/C++ inlining can diffuse an otherwise "hot" method into other methods. This is a rare instance where pstack sampling might not immediately point to the key problem). At this point you'll need to reconcile what you're seeing with pstack and your mental model of what you think the program should be doing. They're often rather different. And generally if there's a key performance issue, you'll spot it with a moderate number of samples. I'll also use OS-level observability tools to lock for the existence of bottlenecks where threads contend for locks; other situations where threads are blocked; and the distribution of threads over the system. On Solaris some good tools are mpstat and too a lesser degree, vmstat. Try running "mpstat -a 5" in one window while the application program runs concurrently. One key measure is the voluntary context switch rate "vctx" or "csw" which reflects threads descheduling themselves. It's also good to look at the user; system; and idle CPU percentages. This can give a broad but useful understanding if your threads are mostly parked or mostly running. For instance if your program makes heavy use of malloc/free, then it might be the case you're contending on the central malloc lock in the default allocator. In that case you'd see malloc calling lock in the stack traces, observe a high csw/vctx rate as threads block for the malloc lock, and your "usr" time would be less than expected. Solaris dtrace is a wonderful and invaluable performance tool as well, but in a sense you have to frame and articulate a meaningful and specific question to get a useful answer, so I tend not to use it for first-order screening of problems. It's also most effective for OS and software-level performance issues as opposed to HW-level issues. For that reason I recommend mpstat & pstack as my the 1st step in performance triage. If some other OS-level issue is evident then it's good to switch to dtrace to drill more deeply into the problem. Only after I've ruled out OS-level issues do I switch to using hardware performance counters to look for architectural impediments.

    Read the article

< Previous Page | 78 79 80 81 82 83 84 85 86 87 88 89  | Next Page >