Re: SSD + RAID

Поиск
Список
Период
Сортировка
От Richard Neill
Тема Re: SSD + RAID
Дата
Msg-id 4B06E72D.20504@cam.ac.uk
обсуждение исходный текст
Ответ на Re: SSD + RAID  (Axel Rau <Axel.Rau@chaos1.de>)
Ответы Re: SSD + RAID
Список pgsql-performance
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;
}


В списке pgsql-performance по дате отправления:

Предыдущее
От: Jonathan Foy
Дата:
Сообщение: Re: View based upon function won't use index on joins
Следующее
От: Richard Neill
Дата:
Сообщение: Re: Postgres query completion status?