Axel Rau wrote:
Am 13.11.2009 um 14:57 schrieb Laszlo Nagy:
I was thinking about ARECA 1320 with 2GB memory + BBU. Unfortunately,
I cannot find information about using ARECA cards with SSD drives.
They told me: currently not supported, but they have positive customer
reports. No date yet for implementation of the TRIM command in firmware.
...
My other option is to buy two SLC SSD drives and use RAID1. It would
cost about the same, but has less redundancy and less capacity. Which
is the faster? 8-10 MLC disks in RAID 6 with a good caching
controller, or two SLC disks in RAID1?
Despite my other problems, I've found that the Intel X25-Es work
remarkably well. The key issue for short,fast transactions seems to be
how fast an fdatasync() call can run, forcing the commit to disk, and
allowing the transaction to return to userspace.
With all the caches off, the intel X25-E beat a standard disk by a
factor of about 10.
Attached is a short C program which may be of use.
For what it's worth, we have actually got a pretty decent (and
redundant) setup using a RAIS array of RAID1.
[primary server]
SSD }
} RAID1 -------------------} DRBD --- /var/lib/postgresql
SSD } }
}
}
}
}
[secondary server] }
}
SSD } }
} RAID1 --------gigE--------}
SSD }
The servers connect back-to-back with a dedicated Gigabit ethernet
cable, and DRBD is running in protocol B.
We can pull the power out of 1 server, and be using the next within 30
seconds, and with no dataloss.
Richard
#include <string.h>
#include <stdio.h>
#include <stdlib.h>
#include <unistd.h>
#include <errno.h>
#include <sys/types.h>
#include <sys/stat.h>
#include <fcntl.h>
#define NUM_ITER 1024
int main ( int argc, char **argv ) {
const char data[] = "Liberate";
size_t data_len = strlen ( data );
const char *filename;
int fd;
unsigned int i;
if ( argc != 2 ) {
fprintf ( stderr, "Syntax: %s output_file\n", argv[0] );
exit ( 1 );
}
filename = argv[1];
fd = open ( filename, ( O_WRONLY | O_CREAT | O_EXCL ), 0666 );
if ( fd < 0 ) {
fprintf ( stderr, "Could not create \"%s\": %s\n",
filename, strerror ( errno ) );
exit ( 1 );
}
for ( i = 0 ; i < NUM_ITER ; i++ ) {
if ( write ( fd, data, data_len ) != data_len ) {
fprintf ( stderr, "Could not write: %s\n",
strerror ( errno ) );
exit ( 1 );
}
if ( fdatasync ( fd ) != 0 ) {
fprintf ( stderr, "Could not fdatasync: %s\n",
strerror ( errno ) );
exit ( 1 );
}
}
return 0;
}
--
Sent via pgsql-performance mailing list (pgsql-performance@xxxxxxxxxxxxxx)
To make changes to your subscription:
http://www.postgresql.org/mailpref/pgsql-performance