Level Extreme platform
Subscription
Corporate profile
Products & Services
Support
Legal
Français
Visual Foxpro Performance
Message
From
19/08/2015 19:46:14
 
General information
Forum:
Visual FoxPro
Category:
Installation, Setup and Configuration
Environment versions
Visual FoxPro:
VFP 9
OS:
Windows Server 2008
Network:
Windows 2008 Server
Database:
Visual FoxPro
Application:
Desktop
Miscellaneous
Thread ID:
01623614
Message ID:
01623619
Views:
167
>How to get maximum performance with a terminal server?
>
>The virtual server (windows 2008R2) has 48 Gig memory available and the virtual machine sits on PCI-SSD Disks
>
>Witch settings can I play with to get the most performance ?

Not 100% sure what you mean by "maximum performance".

There is the "normal" stuff such as optimizing your code, making sure your queries are fully optimized. This helps regardless of the hardware platform. From a recent troubleshooting case I found that when index tags went missing on a critical table, report processing was slowed down by a factor of 250 - a report that normally ran in 4 seconds took over 1000 seconds (over 15 minutes).

If you're doing a lot of heavy processing within VFP and need high performance of VFP within a TS session, you're probably already most of the way there by having lots of RAM available and an extremely fast PCI-based SSD. However I believe there are some circumstances where VFP by default may allocate more RAM than is required for maximum performance, and performance can actually suffer as a result. I think Thomas Ganss has some experience with this, maybe he can offer some advice.

If your app does a lot of disk writes you could consider enabling write caching on the drives in question. With magnetic drives this can help a lot, but against such a fast SSD there may not be much improvement. If you do this make sure the whole server is backed by a good UPS and/or the PCI SSD itself is battery-backed, otherwise data may be lost in the event of a power failure.

Be sure you know how to profile your app on the server, using Task Manager/Resource Monitor to view CPU usage, disk throughput etc. These can be used to identify bottlenecks.

By default a VFP app will use only one CPU core (real or virtual). If you find your app is CPU-bound you may need to think of strategies to parallelize the required work. There is a multi-threaded version of VFP available but I'm not sure how well that can utilize additional processor cores. There is a ParallelFox project available, I haven't used it so I don't know how effective or easy to use it may be. You can also consider running multiple instances of your app or out-of-process EXE COM server to utilize multiple cores. You may be able to make use of simple strategies such as processing a 1 million row table by using 4 instances, each of which processes 250,000 rows.

If instead by "maximum performance" you mean a crisp, responsive user experience in a TS session, then you need:

- fast, responsive performance per the tips above
- fast connection between TS server and clients. A rule of thumb is you need a minimum 50 kilobits/sec of uplink speed from the server to the client to get reasonably good responsiveness in Remote Desktop. This is usually not an issue on a LAN, where gigabit speed is common. However, it can be a limitation for remote users.

For example, a typical broadband connection is asymmetric and might have numbers such as 10 Mbit/sec down, 0.5 Mbit/sec up (or 512 kilobit/sec up). That connection might support as many as 10 simultaneous remote users, more than that could see sluggish response.

To help with performance of VFP apps on terminal servers, VFP 6 introduced the BITMAP=OFF option for the CONFIG.FPW file. This is also available as SYS( 602 ) on some later versions of VFP.
Regards. Al

"Violence is the last refuge of the incompetent." -- Isaac Asimov
"Never let your sense of morals prevent you from doing what is right." -- Isaac Asimov

Neither a despot, nor a doormat, be

Every app wants to be a database app when it grows up
Previous
Next
Reply
Map
View

Click here to load this message in the networking platform