MC 70 Performance vs Competitive devices

End customer is piloting our MC70, a Intermec CN3, and a HHP device. They are running a home grown JAVA application using Oracle Lite as the database. We have already increased the page pool size and installed the write through flag shim to try and resolve. Both helped somewhat but we are still performing the task in 8 seconds versus the competitive devices performing in 4 seconds. Looking to this community for any other methods you know or have developed to increase performance on a MC70.
Carl Pearson
How about putting the

How about putting the database on a fast SDIO-MMC card and setting SDSwitch appropriately?
The Write-Through flag might not have any affect on an Sybase Ultralite database.
There may be some screen painting issues, too, but these may not be easily controlled in Java.
If they parked the DB in \Application it would be even worse than in \Program Files or \Temp.

Carl
Texas
Vote: 
Vote up!
Vote down!

Points: 1

You voted ‘up’


joseph boriotti
Carl - we don't want to use

Carl - we don't want to use the SDIO driver for this demo. Rather, use the SD/MMC driver as it is well-proven. Joe B.
Vote: 
Vote up!
Vote down!

Points: 1

You voted ‘up’


Juan-Antonio Ma...
What about using \Application

What about using \Application Data\Volatile as working folder? This is RAM, I guess.
Vote: 
Vote up!
Vote down!

Points: 0

You voted ‘up’


Richard Linsley-Hood
No the \Application Data

No the \Application Data\Volatile folder (along with every other directory from the 'root') is in Flash ROM. The only directories for which this does not apply are

1) /Application (stored in a different Flash chip - same one as the OS in fact).
2) /Cache Disk (stored in RAM)
3) /Storage Card (stored in any SD card)

If you do decide to use /Cache Disk then please be aware of the volatility of this folder. It can be made to be Warm Boot persistent but not Cold or Clean Boot persistent. This may have data retention implications depneding on use.

Richard LH
Vote: 
Vote up!
Vote down!

Points: 1

You voted ‘up’


Richard Linsley-Hood
If you are in a competitive

If you are in a competitive situation in this way then we will always be worse than some/many of our competitors as regards to writing speeds to Flash (in other words any file writes). This is because of the design decisions taken by Engineering when they created the terminal as to the particular Flash chips used. This design decision cannot be altered now. This decision was taken for reasons other than pure speed.

Therefore if we are being forced to be benchmarked on a particular parameter which we already know we are slow on then we will always fail.

There is no way in which we can make this terminal perform significantly better at file writes (other than to Cacahe Disk) than it does right now. Small (5%-10%) changes are possible by fine tuning. Anything else is very unlikely to be possible at all.

Richard LH
Vote: 
Vote up!
Vote down!

Points: 0

You voted ‘up’


Gene Niles
You may want to try running

You may want to try running some sort of profiling tool to help identify where the slowness is. We have a tool that may help at http://compass.mot.com/go/252213771

note this is not a supported tool but the detailed process dumps it provides (on startup and ever 30 mins, by default) could tell you the CPU usage on each process/thread. Comparing this to the reference device, could point to what needs needs to be tweaked. Please do not distribute and use only for your own testing. 
Vote: 
Vote up!
Vote down!

Points: 0

You voted ‘up’


Juan-Antonio Ma...
You may well want to use a

You may well want to use a ramdisk for WM5 (at your own risk ) such as the one described in:
http://forum.brighthand.com/showthread.php?t=224727
which can be downloaded from:
http://www.winmobiletech.com/sekalaiset/GenericWM5RAMDisk.zip
but first please read:
http://www.pocketpcmag.com/blogs/index.php?blog=3&p=1091&more=1&c=1&tb=1&pb=1
Vote: 
Vote up!
Vote down!

Points: 0

You voted ‘up’


Richard Linsley-Hood
The \Cache Disk is already a

The \Cache Disk is already a RAM disk. You do not need to add anything to the terminal to use one. It is built in.

However the use of a RAM disk needs to be carefully examined. As I said \Cache Disk is not Cold or Clean Boot persistent.

Richard LH
Vote: 
Vote up!
Vote down!

Points: 0

You voted ‘up’


Richard Linsley-Hood
You should also ensure that

You should also ensure that you are using Oracle Database Lite 10g Release 3 as recomended by Oracle.

There may be other improvements available for whichever Java platform they are using on the MC70 but I am not sure if or how much change that would make.

Richard LH
Vote: 
Vote up!
Vote down!

Points: 0

You voted ‘up’


Carl Pearson
Here is a thought for a value

Here is a thought for a value-add for our WM 5.0 devices that addresses performance challenges I constantly face. 

MotoRAID service/task.  A folder in \Cache Disk is RAIDed to flash or SD card by a background task. 

E.G. \Cache Disk\MotoRAID is mirrored to \Storage Card\MotoRAID, sector for sector (or whatever you call it in flash.)  On a cold boot it could be copied from \Storage Card\MotoRAID back to \Cache Disk\MotoRAID and oulia', we have a super-fast database backed up (albeit a few seconds later) for Cold Boot persistence.

FAST and PERMANENT!  Now somebody who know what the heck they are doing at the OS level has to write it as a tight, small, event driven thread that will receive sector level I/O writes to that directory and mirror them next door while running at a lower priority. 

Carl ~ Texas 
Vote: 
Vote up!
Vote down!

Points: 0

You voted ‘up’


Juan-Antonio Ma...
\Cache disk is just 4 MB. You

\Cache disk is just 4 MB. You may need more space.
With Ramdisk you can set disk's size.
I tested it and its contents would not survive any kind of boot.

Anyway, pls make no mistake, I am not recommending using an unsupported utility I have tested for 15 minutes or so...
Vote: 
Vote up!
Vote down!

Points: 0

You voted ‘up’


Juan-Antonio Ma...
Carl, I guess that we would

Carl, I guess that we would be reinventing the wheel..
The basic problem is how WM5 buffers and then how it flushes "dirty" (written) pages to disk...ensuring data consistency in case of reset.
Vote: 
Vote up!
Vote down!

Points: 0

You voted ‘up’


Richard Linsley-Hood
The built-in \Cache Disk can

The built-in \Cache Disk can be set up to 22MB on a 64MB RAM terminal and 86MB on a 128MB RAM one by use of the registry.

Richard LH
Vote: 
Vote up!
Vote down!

Points: 0

You voted ‘up’


Carl Pearson
If I park the DB in \Cache

If I park the DB in \Cache Disk, it is lightening fast. 
If I park it in \Storage Card or \Temp (sic) it is persistent.
Users want both lightening fast and persistent.  Greedy little tykes, aren't they?

I can write my own thread to double store a transaction on a queued basis but a MotoRAID service would make it universal for a directory.  Sure it would have to flush buffers, but the user is playing in quick RAM and the background MotoRAID worker-bee would be handling the persistence aspect.  Maybe WM 6 or CE 6.0 will have such a feature?
Vote: 
Vote up!
Vote down!

Points: 0

You voted ‘up’


Richard Linsley-Hood
This sort of lazy persistent

This sort of lazy persistent write thing is best done by the Database manufacturer. After all in most cases they already have a set internal disk buffers they use before they go to write to disk so mirroring them is simple.

Microsoft already improved the functionality of SQL Server CE for Winodws Mobile 5.0. The latest version of the Oracale Lite Dadabase is also, I believe, optimised for Windows Mobile 5.0 & 6.0.

The writing of a 'lazy shadow write' driver is very non-trivial. Updates to any file occur (as far as the disk is concerend) at random places and with random timing. Ensuring that the data is at all times valid and complete in both places before the file is closed means that ALL outstanding writes have to be mirrored before it is safe. Exactly what consistes of 'complete' is the question. How long do you wait before you consider the disk is quiet? You cannot just 'slice through' and hope as then statiscally you will then have a window of failure where disk1 contains update 1 & 2, but disk2 only has update 1. If the database expects both updates then you are going to fail.

As I said, a very non trivial thing to write then. It could be done by using a complety seperate disk driver that wrote to both destinations, but then you again get into 'how big are the RAM buffers before you run out of space' limits. You could get this sort of improvement by just upping the numberof the disk buffers already in the OS on a standard Flash filing system but, eventually, you run out of buffers to perform 'fast' writing.

Richard LH

Vote: 
Vote up!
Vote down!

Points: 0

You voted ‘up’


Chandan Bettahalli
If you want to make the

If you want to make the \Cache Disk persistent across warmboots, you need to set a reg key which somewhat looks like "EnableDataThroughWarmboot".... After this, do a warmboot and then install your DB package on \Cache disk.. now do warmboots.... your data/installed files should be persistent in there.

Vote: 
Vote up!
Vote down!

Points: 0

You voted ‘up’


Anonymous (not verified)
Whats the current size for

Whats the current size for \CacheDisk folder? Moreover have updated the MC70 with new Nand Flash firmware..If not then do it..it will improve the performance to the great extent.
Vote: 
Vote up!
Vote down!

Points: 0

You voted ‘up’


Log in to post comments