What's new
  • Please do not post any links until you have 3 posts as they will automatically be rejected to prevent SPAM. Many words are also blocked due to being used in SPAM Messages. Thanks!

Corsair P64 64GB SSD Review

Status
Not open for further replies.

AkG

Well-known member
Joined
Oct 24, 2007
Messages
5,270
corsair.jpg



Corsair P64 64GB SSD Review





Manufacturer Page: Welcome to Corsair :: Solid State Disk Drives
Part Number: CMFSSD-64GBG2D
TechWiki Info: Corsair P64
Price: about $125
Warranty: 2 years



When Corsair released their first ever SSD a little while ago it made some waves in the enthusiast community since it was the first time you could buy a Samsung controller-based SSD which would be backed by Corsair’s great warranty and support. While we never looked at that SSD in an official capacity, the one area where that model line had a perceived limitation was in the pure performance department. The drives were first and foremost designed for a smooth and stutter free experience…with insane performance above and beyond a certain point trailing way back in the list of priorities. This in turn gifted the Corsair M line with one of the few truly stutter free SSDs out at that time. In many ways that drive had a purpose and it succeed at that purpose: it made Corsair a player in the SSD arena and gave them some much needed “street cred”.

Well Corsair is back and this time not only we do we have a sample to torture but this one has been designed and labeled as a Performance model SSD (thus the “P” in the model name). Unfortunately, the Corsair P64 is not widely available at retailers and e-tailers yet but it should be soon and will go for about $125 USD. Not only does it sport a reasonable, and very competitive price it also has the latest and greatest Samsung controller. The specs are also drool-worthy and it will make for one heck of an interesting comparison against the more widely entrenched Indilinx and Intel controller-based SSDs we have reviewed in the past.

In many people's minds, Samsung was bumped out of their king-of-the-hill position by Intel and then to add insult to injury were again one-upped by a relatively unknown company named Indilinx. Does Samsung have blood in their eyes and are looking to regain the crown? Are they finally getting the idea that the aftermarket storage marketplace is just as big if not bigger than the OEM marketplace? Will we see other Samsung based SSDs, following in the OCZ Summit and now the Corsair P-series' footsteps coming out of the woodwork? One way or another, the biggest question really is: how does particular Corsair drive stack up against the X-25M and Indilinx Barefoot controller SSDs that have been flooding the market as of late?

performance_series.jpg

 
Last edited by a moderator:

AkG

Well-known member
Joined
Oct 24, 2007
Messages
5,270
Specifications

Specifications


specs.jpg

 
Last edited by a moderator:

AkG

Well-known member
Joined
Oct 24, 2007
Messages
5,270
First Impressions

First Impressions


Since our Corsair SSD did not come in a retail package, we are skipping right to the First Impressions section.

Corsair_P64GB_bottom_sm.jpg
Corsair_P64GB_top_sm.jpg

This is a very handsome and striking looking drive with its two-tone light and silver all metal body. We love the fact that the metal case has that metal brushed look to it which is most likely a side effect of the metal extrusion process but it does sure look amazing.

Corsair_P64GB_top_ang_sm.jpg

In keeping with the overall colour scheme of the exterior box it will be shipped to customers in, the large label on the top of the drive is done in a black & white scheme which nicely contrasts with the darker gray silver top panel.

As with all labels we have seen on SSDs, this one doesn’t contain much in the way of information and is more of a product label, stating the make and model of the drive rather than anything else.

Corsair_P64GB_bottom_ang_sm.jpg

The label with all the interesting information is actually located on the back of this drive. It is small but what it lacks in size it makes up for in detail the Not only does it list a bevy of information but it also shows that the P64 is a rebadged Samsung MMCRE64G5MXP-0VB solid state drive.

Corsair_P64GB_label_sm.jpg

While knowing the Samsung model number is all well and nice, what is pause worthy was the fact that the label states this drive ships with 1801 and not the newer 18C1 firmware. Idle Time Garbage Collection, which has been wrongly called “auto trim” was only released as a new feature in 18C1.

Needless to say, this brought things to screeching halt and we got in contact with Corsair to get to the bottom of this. We were able to confirm that no P64GB SSDs were ever released to the general public with the 1801 firmware (it is a labeling issue on Samsung’s end, not Corsair’s). The quote we got from one of our Corsair contact was: “we have never released any P64 to consumers with 1801(old) firmware.” That is good enough for us and we understand that when another company is responsible for the labels, these mix ups can happen. We should also state here and now that we will be detailing the Idle Time Garbage Collection feature a little later.

As with every other SSD we can remember ever seeing this SSD has been drilled and tapped for both bottom and side mounting options. Unlike most Indilinx SSDs, the Corsair P64 has no jumper pins located next to the power and data ports. This is to be expected as darn near everyone BUT Indilinx has mastered non-jumper based firmware flashing. Does this mean this drive can be flashed to a newer firmware? That is a question we will answer later in this review.
 
Last edited by a moderator:

AkG

Well-known member
Joined
Oct 24, 2007
Messages
5,270
Interior Impressions

Interior Impressions


Before we continue: Please remember that opening any SSD will effectively void your warranty.

Corsair_P64GB_top_off_sm.jpg

To open up a Corsair P64 you have to remove four screws and then gently lift the silver cover away from the case but there is NO warranty void sticker to break but we have to assume that as soon as you crack it open your warranty is toast.

Corsair_P64GB_board_sm.jpg
Corsair_P64GB_board2_sm.jpg

While we are used to the layout of the Indilinx drives out there, this Samsung-based one is different. The biggest thing that jumps out is the empty placements for an additional 8 chips (we assume for the 128GB or 256GB model). To be honest, except for the fact that the NAND chip layout may not be exactly the same as an Indilinx, the overall appearance is still dictated by logic for both companies and in total you have 8 flash chips, one RAM chip and one controller chip.

At the top of the PCB you have the Samsung controller with its accompanying ram chips and then rows of NAND chips. In fact, the only real difference is that unlike Indilinx SSDs which have two rows of four chips on each side of the PCB, the P64 has two rows of three on the “top” side and then on the backside a small row of two more chips in the center between the area where a larger double row of 4 chips each would reside (it is this double row chips which are lacking from our smaller 64GB model). It is interesting to see the differing layouts and the different way both companies arrive at the same conclusion, but to be honest we prefer the cleaner look of the Indilinx.

Corsair_P64GB_controller_sm.jpg

The I/O controller chip is of course none other than the Samsung S3C29RBB01-YK40 controller. As expected, this is the exact same controller which graces the Samsung MMCRE64G5MXP-0VB SSD. According to Samsung’s online decoder, the S3C29RBB01-YK40 is a 32bit ARM 9 microcontroller and according to their specs it is rated for speeds of 220MB/Sec read and 200MB/s writes. On paper this makes it SLIGHTLY slower in reads but slightly faster in writes than the Indilinx Barefoot controller which has a 230 / 190 speed rating.

Corsair_P64GB_ram_sm.jpg

The Ram which graces this board is as expected, also made by Samsung. To be specific this is a single 128MB Mobile DDR SDRAM with the model number K4X1G323P0-8GC6. This 90-FBGA chip is rated to run at 1.8v CL3 and is rated for an operating temperature range of -25°C to 85°C (or what Samsung calls Extended, Low, PASR & TCSR). These specs make it a more robust as well larger chip than the one which is normally found in Indilinx SSDs.

Corsair_P64GB_NAND_sm.jpg

Unlike the usual K9HCG08U1M we find in Indilinx drives the MLC NAND chips used in the P64 are Samsung K9HCGZ8U5M-SCK0. These chips use a 48 pin MLC Quad Die Package, 1st generation lead free & Halogen Free (ROHS compliant),are rated between 2.7V ~ 3.6V, and operate with Quad nCE (Quad Chip Enable control) & Quad R/nB (Quad Ready/Busy Output) along with customer bad block special handling. This model is rated at a density of 64Gbits or 8GB per chip and an operating temperature range of 0° to 70°C.

Above the model number (and as stated in previous reviews) we can see all 8 chips were made in the 19th week of 2009. In a nutshell, the only difference between these chips and the K9HCG08U1Ms is that the “Z” in the model name means they have specifically designed for SSD use and thus do not come with the typical “Normal (x8)” designation (i.e. the P64 chips are made by Samsung for Samsung SSDs), The other difference is the QUAD (the “5” in the model number) vs. DUAL NCE & R/nb (the “1” in their model) capabilities of the Indilinx SSD chips. When you think about it, it is not surprising that Samsung uses enhanced (or at the very least custom model) chips for their drives as that is one of the perks of being the supplier of NAND chips to darn near ALL SSD builders.
 
Last edited by a moderator:

AkG

Well-known member
Joined
Oct 24, 2007
Messages
5,270
Idle Time Garbage Collection and Firmware Updates

Idle Time Garbage Collection


<img src="http://images.hardwarecanucks.com/image/akg/Storage/P64/cleaner.jpg" border="0" alt="" />​

So what is this Idle Time Garbage Collection we have been hearing about? It is a new technology that was added with much fanfare to firmware 18C1 of Samsung’s latest SSD controller and thus by extension the Corsair P line. What exactly ITGC does and how it does it is actually not totally known and is considered a trade secret. However we can give a good broad overview of what it does.

To be breif, what ITGC does is automatically restore previously used (but now containing invalid data) blocks back to an empty state. To put it even more simply, when the drive “gets bored” it goes through its tables, looks for data which is no longer valid (i.e. marked by the OS for deletion) and then does a preemptive erase on them. Given enough time it will clean ALL the used blocks back to a squeaky clean'ish “virgin state”. The key to understanding why ITGC is needed let alone a big deal is actually fairly simple yet three fold:

1) Wear leveling technology built into ALL SSDs means that data is written across the entire drive but

2) While an SSD reads and writes at the cell level, and while these cells arranged into 4KB pages of data, the drive can only erase an entire block of pages at a time (i.e. 512KB of data!)

3) When you run out of "free" blocks your speeds go down the shitter.

Caution! Technical jargon ahead!

Here is what's really going on behind the scenes: When even one page of data in a given block is marked as deleted by the OS (i.e. becomes invalid), and since a TRIM command cannot yet be initiated, this invalid data hangs around and the controller ignores the entire block of cells it is located in and moves unto other free and unused blocks. This is all well and fine while the drive is new and has free unused blocks to waste, but over time the drive runs out of free blocks. It is only when the controller runs out of free blocks that things get slow, as it has to do a garbage collection in real time and free up blocks before the new writes can happen.

When the SSD runs out of free blocks and a new write is initiated, an entire block of data which has invalid data pages in it has to be first read into memory, then the block erased along with the the old valid data and the new data rewritten to the entire block (the invalid is thrown away via a lookup on all the data to see what is valid and invalid). This is a LOT slower than a normal write and this situation is what is called a “used state” condition. This used state is something which should be avoided at all costs as it will turn your speedy SSD in an embarrassingly slow brick. Luckily, programs like wiper.exe and the Idle Time Garbage Collection feature go a long way in taking care of these issues.

Since Samsung didn’t have a wiper.exe program they thought up this data consolidation and invalid data cell re-freshener as a stop gap measure. It runs automatically whenever it senses an extended idle period or to put it another way they took the emergency “OH MY GOD WE HAVE NO FREE BLOCKS LEFT….MAKE SOME RIGHT NOW!!” procedure and got it to run when ever the drive is idle.

At this point I am sure you are asking “OK, that sounds good but what does it DO!?” Basically, during idle / low IO times it reclaims invalid data blocks BEFORE the drive runs out. When your SSD is idling it does a lookup in its mapping table for any data which has been marked as “invalid” and it then copies the good data in that block into memory. Then it does a preemptive erase and then via its wear leveling algorithms finds an empty block of cells with the lowest wear on them (which is also free and available) and writes the data to it. Rinse and repeat for as long as the idle time lasts and what you end up with is a drive with no invalid blocks…in theory.

In reality some tests have shown that a full recovery of speed is not going to happen. The really interesting thing is this happens at the device level and not the OS level so in theory it should work on RAID’ed and even non Windows formatted drives; however some people not running a Windows OS have reported it "not working" and it is speculated that this works (as of now) on NTFS formatted drives only. This is only speculation as unless your drive is slow to begin with you probably won’t notice any difference.

<img src="http://images.hardwarecanucks.com/image/akg/Storage/P64/SANGSUNG_logo.jpg" border="0" alt="" />

We could get into a technical argument over Sasmung’s Idle Time Garbage Collection vs. Indilinx’s Wiper.exe and which is better, but the truth of the matter ITGC is better than nothing and it's all that Samsung has right now. It does work, albeit slowly, and while it may not work as well as a TRIM command sent via the OS, it is a good interim stopgap. With Native OS Trim support (ATA T13 TRIM) just around the corner (Windows 7 seems to be when most SSD controller manufacturers will release a firmware update), it would seem like a better idea to get it added into the firmware rather than ITGC.

However the big reason this was added now and TRIM will be added later, is this is part of a one-upmanship battle going on between Samsung and their ex-employees at Indilinx. Indilinx changed the rules of the game with the introduction of the wiper.exe program and it did leave Samsung in a bad position PR wise. For the first time ever, Samsung drives were being considered (rightly or wrongly) as being inferior to the Indilinx SSDs.


Firmware updates


<img src="http://images.hardwarecanucks.com/image/akg/Storage/P64/corsair.jpg" border="0" alt="" />​

In these changing times the inability of ANY SSD to not be flashed to a later firmware does mean that, that drive is going to be obsolete LONG before it should be. For example if this Corsair SSD had come with the older 1801 firmware it would not have ITGC and that would have been a crying shame. Unfortunately, if there is one thing Samsung SSDs have been known for in the past, it is their lack of enthusiasm for end user firmware updates. They usually only let the big OEMs have access to this feature so it was with some trepidation we decided to find out what was happening on this front with Corsair.

In another example of Corsair’s commitment to their customers they informed us that about when Windows 7 is released, Samsung WILL be to the best of their knowledge releasing an updated firmware to give ATA T13 Native OS TRIM support to these drives. Here is the pertinent quote from the email we received:
“it's our understanding that Samsung will be releasing a firmware upgrade utility that we can roll out to the general public around the time of the Windows 7 launch.”
 
Last edited by a moderator:

AkG

Well-known member
Joined
Oct 24, 2007
Messages
5,270
Testing Methodology

Testing Methodology


Testing a hard drive is not as simple as putting together a bunch of files, dragging them onto folder on the drive in Windows and using a stopwatch to time how long the transfer takes. Rather, there are factors such as read / write speed and data burst speed to take into account. There is also the SATA controller on your motherboard and how well it works with SSDs to think about as well. For best results you really need a dedicated hardware RAID controller w/ dedicated RAM for SSDs to shine. Unfortunately, most people do not have the time, inclination or monetary funds to do this. For this reason our testbed will be a more standard motherboard with no mods or high end gear added to it. This is to help replicate what you the end user’s experience will be like.

Even when the hardware issues are taken care of the software itself will have a negative or positive impact on the results. As with the hardware end of things, to obtain the absolute best results you do need to tweak your OS setup; however, just like with the hardware solution most people are not going to do this. For this reason our standard OS setup is used. However, except for the XP load test times we have done our best to eliminate this issue by having the drive tested as a secondary drive. With the main drive being a WD 320 single platter drive.

For these tests we used a combination of the ATTO Disk Benchmark, HDTach, HDTune, Cystal Disk Benchmark, h2benchw, SIS Sandra Removable Storage benchmark, and IOMeter for synthetic benchmarks.

For real world benchmarks we timed how long XP startup took, Adobe CS3 (w/ enormous amounts of custom brushes installed) took, how long a single 4GB rar file took to copy to and then from the hard drives, then copy to itself. We also used 1gb of small files (from 1kb to 20MB) with a total 2108 files in 49 subfolders.

For the temperature testing, readings are taken directly from the hottest part of the drive case using a Digital Infrared Thermometer. The infrared thermometer used has a 9 to 1 ratio, meaning that at 9cm it takes it reading from a 1 square cm. To obtain the numbers used in this review the thermometer was held approximately 3cm away from the heatsink and only the hottest number obtained was used.


Please note to reduce variables the same XP OS image was used for all the hard drives.

For all testing a Gigabyte PA35-DS4 motherboard was used. The ICH9 controller on said motherboard was used.

All tests were run 4 times and average results are represented.

Processor: Q6600 @ 2.4 GHZ
Motherboard: Gigabyte p35 DS4
Memory: 4GB G.Skill PC2-6400
Graphics card: Asus 8800GT TOP
Hard Drive: 1x WD 320
Power Supply: Seasonic S12 600W Performance Testing

SSD FIRMWARE (unless otherwise noted):
G. Skill Titan: 0955
G.Skill Falcon: 1571 (AKA FW 1.3)
OCZ Apex: 955
OCZ Vertex: 1.3 (AKA FW 1571)
Patriot Torqx: 1571 (AKA FW 1.3)
Corsair P64: 18C1Q

Please note: The "G.Skill 64GB" listed in some of the graphs (the one with incomplete data) is the very first SSD we here at HWC reviewed. It does not have a name but its model number is FS-25S2-64GB and here is a link to our review of it.
 
Last edited by a moderator:

AkG

Well-known member
Joined
Oct 24, 2007
Messages
5,270
Read Bandwidth / Write Performance

Read Bandwidth


For this benchmark, HDTach was used. It shows the potential read speed which you are likely to experience with these hard drives. The long test was run to give a slightly more accurate picture.

We don’t put much stock in Burst speed readings and this goes double for SSD based hard drive. The main reason we include it is to show what under perfect conditions a given drive is capable of; but the more important number is the Average Speed number. This number will tell you what to expect from a given drive in normal, day to day operations. The higher the average the faster your entire system will seem.


Corsair_P64GB_read.jpg


While an average speed of over 208MB/s is nothing to sneeze at, it still is lower than then its main rivals: the Intel X-25 FIRST generation SSD and all Indilinx SSDs we have looker at so far. This is not unexpected as Samsung does give up a little read potential for higher write potential (or at least that is what the specifications tell us) and in the grand scheme of things when you get into speeds this high you are just not going to notice a difference between 230MB/s or 210MB/s. One way or another, speed like this is going to knock your socks off if this is your first SSD.


Write Performance


For this benchmark HD Tune Pro was used. To run the write benchmark on a drive, you must first remove all partitions from that drive and then and only then will it allow you to run this test. Unlike some other benchmarking utilities the HD Tune Pro writes across the full area of the drive, thus it easily shows any weakness a drive may have.

Corsair_P64GB_write.jpg


Now these numbers are indeed disappointing considering the numbers Corsair claims in write performance. The only reason we can think of for performance like this is that the P64 is a 64GB unit and the Indilinx SSDs we have looked at were 128GB. Sixteen 8GB chips seems to be the sweet spot for this generation of Indilinx SSDs and based on these lower than expected numbers we have a sneaking suspicion this is the case with the Samsung controller as well. Unfortunately, Corsair didn't send their P128GB model. It is a damn shame, but in the future maybe we will come back and review the P128 model to see if our hunch is correct.
 
Last edited by a moderator:

AkG

Well-known member
Joined
Oct 24, 2007
Messages
5,270
Crystal DiskMark / Random Access

Crystal DiskMark


Crystal DiskMark is designed to quickly test the performance of your hard drives. Currently, the program allows to measure sequential and random read/write speeds; and allows you to set the number of tests iterations to run. We left the number of tests at 5. When all 5 tests for a given section were run Crystal DiskMark then averages out all 5 numbers to give a result for that section.

Read


Corsair_P64GB_CDM_r.jpg


When it comes to read speeds in Crystal DiskMark it appears the Samsung controller is the equal of the X-25M first gen in the all important small file 4k read test. It also posts some impressive numbers in the larger tests, but the small read test crown still resides firmly in the Indilinx camp. Score another one for the EX-Samsung employees.


Write


Corsair_P64GB_CDM_w.jpg


As with the read tests, the P64 posts some very good 512 and sequential write numbers but falls flat in the crucial 4k write test. We suspect that with some fine tuning of the firmware this issue could be alleviated, somewhat, but we doubt if this controller will ever match the Barefoot, let alone the power house called Intel X-25M…128MB of cache or no.


Random Access Time


To obtain the absolute, most accurate Random access time, h2benchw was used for this benchmark. This benchmark tests how quickly different areas of the drive’s memory can be accessed. A low number means that the drive space can be accessed quickly while a high number means that more time is taken trying to access different parts of the drive. To run this program, one must use a DOS prompt and tell it what sections of the test to run. While one could use “h2benchw 1 -english -s -tt "harddisk test" -w test” for example and just run the seek tests, we took the more complete approach and ran the full gamout of tests and then extracted the necessary information from the text file. This is the command line argument we used “h2benchw 1 -a -! -tt "harddisk drivetest" -w drivetest”. This tells the program to write all results in english, save them in drivetest txt file, do write and read tests and do it all on drive 1 (or the second drive found, with 0 being the OS drive).

Corsair_P64GB_random.jpg


WOW. Score one for Samsung! The lower the latency the snappier your drive will seem and boy this thing is FAST. 0.08ms is best in class performance and is simply amazing.
 
Last edited by a moderator:

AkG

Well-known member
Joined
Oct 24, 2007
Messages
5,270
ATTO Disk Benchmark

ATTO Disk Benchmark


The ATTO disk benchmark tests the drives read and write speeds using gradually larger size files. For these tests, the ATTO program was set to run from its smallest to largest value (.5KB to 8192KB) and the total length was set to 256MB. The test program then spits out an extrapolated performance figure in megabytes per second.

Read


Corsair_P64GB_atto_r.jpg


When it comes to ATTO reads and the P64 SSD, it appears this drive performs just about on par with the last generation dual JM602b controller based products. That isn't a good thing considering this is a current gen drive.


Write


Corsair_P64GB_atto_r.jpg

Once again this drive posts numbers that aren't quite up to snuff when compared to other modern SSDs. At all but the shortest test, this drive simply gets outperformed by all the other SSDs we have reviewed as of late.
 
Last edited by a moderator:

AkG

Well-known member
Joined
Oct 24, 2007
Messages
5,270
IOMETER / IOMeter Stutter Test

IOMETER


IOMeter is heavily weighted towards the server end of things, and since we here at HWC are more End User centric we will be setting and judging the results of IOMeter a little bit differently than most. To test each drive we ran 5 test runs per HDD (1,4,16,64,128 que depth) each test having 8 parts, each part lasting 10 min w/ an additional 20 second ramp up. The 8 subparts were set to run 100% random, 80% read 20% write; testing 512b, 1k, 2k,4k,8k,16k,32k,64k size chunks of data. When each test is finished IOMeter spits out a report, in that reports each of the 8 subtests are given a score in I/Os per second. We then take these 8 numbers add them together and divide by 8. This gives us an average score for that particular que depth that is heavily weighted for single user environments.

<img src="http://images.hardwarecanucks.com/image/akg/Storage/P64/Corsair_P64GB_IOM.jpg" border="0" alt="" />

At this point performance numbers like this are not unexpected. It seems that this Samsung controller relies heavily on its large cache buffer to perform as well as it does; however when it is either overloaded or not totally utilized, things tend to go down hill fast. With all that being said, the larger cache does make a difference at deep que depths and at is seems the deeper the que the better it does.

This is not something you want in a consumer grade unit as most users do NOT do 128 que depths no matter how much of a power user they are. Please don’t get us wrong, in the consumer arena both the Intel and Indlinx solutions eat the P64’s for lunch irregardless of que depth and its improvement only helps it beat the old internally Raided, JM602b class of SSDs. Once again, this is far from being impressive. If this drive had been out BEFORE the Indilinx Barefoot controller we would cut it a lot more slack but this late 2009 and these numbers are not in line with the best of the best.


IOMeter Stutter Test


In our usual IOMeter test we are trying to replicate real world use where reads severly outnumber writes. However, to get a good handle on how well a Solid State Disk Drive will handle a worse case scenario (and thus how likely the dreaded stutter issue will happen) we have also run an additional test. This test is made of 1 section at que depth of 1. In this test we ran 100% random. 100%writes of 4k size chunks of information. In the .csv file we then found the Maximum Write Response Time. This in ms is worst example of how long a given operation took to complete. We consider anything higher than 333ms (one third of a second) to be a good indicator that stuttering may happen, with the higher the number the worse the duration of the stutter will most likely be.

<img src="http://images.hardwarecanucks.com/image/akg/Storage/P64/Corsair_P64GB_stutter.jpg" border="0" alt="" />

Relying on off die cache does cost this unit when it comes to stutter performance. This is a perfect example of what happens when a manufacturer like Samsung relies on work arounds to give their NEW kit a performance boost over their old product.

This is not Corsair’s fault, rather it is a classic example of the 800lb Gorilla being side swiped by a younger, more hungrier competitor and making some rash decisions. It really must sting Samsung’s pride that they are being beaten at their own game by the first generation controller from former employees. The only positive thing we can say is at least the P64's numbers are better than the older Apex generation SSDs and at least here we can say its numbers are tolerably adequate.
 
Last edited by a moderator:
Status
Not open for further replies.
Top