2008-09-03 12 views
4

Au travail, nous avons une application pour lire des séquences de films OpenEXR 2K (2048 * 1556px). Il fonctionne bien ... sauf lorsque les séquences dépassent les 3 Go (assez courant), il doit alors décharger les anciennes images de la mémoire, malgré le fait que toutes les machines ont 8-16 Go de mémoire (qui est adressable via le matériel Linux BIGMEM).Stocker plus de 3 Go de trames vidéo en mémoire, sur OS 32 bits

Les images doivent être mises en mémoire cache pour être lues en temps réel. Le système d'exploitation est un Fedora Distro 32 bits vieux de plusieurs années (pas possible d'évoluer vers 64 bits, dans un avenir prévisible). La limitation par processus est de 3 Go par processus.

Fondamentalement, est-il possible de mettre en mémoire cache plus de 3 Go de données, en quelque sorte? Mon idée initiale était de répartir les données entre plusieurs processus, mais je ne sais pas si c'est possible.

Répondre

2

Que diriez-vous de créer un lecteur de RAM et de charger le fichier dans cela ... en supposant que le lecteur de RAM soutient le BIGMEM des trucs pour toi.

Vous pouvez utiliser plusieurs processus: chaque processus charge une vue du fichier en tant que segment de mémoire partagée et le processus du lecteur mappe ensuite les segments à tour de rôle selon les besoins.

+0

la technique de processus multiple a été utilisée par Adobe Premiere CS4 avant de passer à 64 bits –

3

Une possibilité peut être d'utiliser mmap. Vous pouvez mapper/démapper différentes parties de vos données dans la même région de mémoire virtuelle. Vous ne pouviez avoir qu'un ensemble mappé à la fois, mais tant qu'il y avait suffisamment de mémoire physique, les données devaient rester résidentes.

1

Je suppose que vous pouvez modifier l'application. Si c'est le cas, le plus simple serait de démarrer l'application plusieurs fois (une fois par tranche de 3 Go de vidéo), de garder une partie de vidéo et d'utiliser un autre programme pour les synchroniser afin qu'ils prennent chacun le contrôle du framebuffer. autre sortie vidéo) à son tour. La synchronisation sera peut-être un peu compliquée, mais elle peut être simplifiée si chaque application possède son propre framebuffer et que le programme de synchronisation pointe le contrôleur vidéo vers le framebuffer correct entre les trames lors du passage à l'application suivante.

1

Mon, quel problème intéressant :)

(EDIT: Oh, je viens de lire le post d'entraînement ram Rob ... Je suis tout excité par le problème ... mais un peu plus à suggérer , donc je ne vais pas supprimer)

Serait-il possible de ...

  1. installer un disque RAM multi-giga-octet, puis
  2. modifier le programme pour faire tout ce qui est la lecture de la " disque"?

Je suppose que la partie de disque RAM est où tout le problème serait, puisque la taille du disque RAM serait OS et dépend du système de fichiers. Vous devrez peut-être créer plusieurs disques RAM et faire sauter votre code entre eux. Ou peut-être pourriez-vous configurer un ensemble de bandes RAID-0 sur plusieurs disques RAM. Ou, s'il y a encore des limitations du système d'exploitation et que vous pouvez vous permettre d'abandonner quelques grands fichiers (4k?), Configurez un ensemble de bandes RAID-0 matériel avec certains de ces nouveaux disques SSD flamboyants. Ou ...

Amusant, amusant, amusant.

Soyez sûr de suivre!

0

@dbr dit:

Il y a une machine d'examen avec une absurde fibre canal RAID-matrice qui peut lire des fichiers 2K directement à partir du tableau facilement. La question est avec l'artiste-postes de travail, de sorte qu'il ne serait pas un $ 4 000 matrice RAID, ce serait des centaines ..

Eh bien, si vous pouvez accepter une limite de ~ 30GB, alors peut-être un seul 36GB Lecteur SSD serait suffisant? Ceux-ci vont pour ~ US $ 1k chacun je pense, et les taux de données pourraient être assez. C'est très bien moins cher qu'une approche purement RAM. Il y a des tailles plus petites disponibles, aussi. Si ~ 60 Go suffisait, vous pourriez probablement vous en sortir avec une matrice JBOD de 2 pour doubler le coût, et passer le contrôleur RAID. Assurez-vous seulement de regarder les options SSD haut de gamme - le bas est rempli de bâtons de mémoire glorifiés. : P