delt hukommelse i Windows-grænser (c ++)

Indlæg af Hanne Mølgaard Plasc

Problem



I øjeblikket arbejder jeg på en løsning for hukommelsesgrænserne pr. Proces. Så jeg kom til delt hukommelse. For det første bruger jeg Windows 7 med visuel studio som udviklingsplatform, vil softwaren køre på et moderne Windows server system med flere CPU'er s og en stor hukommelse.


Nå, jeg informerede mig om hukommelsesgrænser pr. Proces, og jeg har brug for adgang til meget mere hukommelse. Så min ide var at skabe flere processer og bruge delt hukommelse.


Men er det virkelig godt at lave en masse delt hukommelse? Og hvad med præstation?

Bedste reference


@ Aurus,


Det lyder som om, hvad du har brug for til at dække dine mål, er en specialdesignet løsning, der er skræddersyet til specifikke (omend underbeskrevne) krav. Mens Stack Overflow er yderst nyttigt for udviklere og softwareingeniører, der søger professionel klarhed og programmatiske eksempler, kan det ikke være nemt at finde ud af, hvad der er relevant inden for højt niveau, og det vil sandsynligvis ikke give de specifikke svar, du søger. Man kunne lave for mange antagelser fra dit indlæg.


Uanset hvilke fordele du kan (eller måske ikke) opnår fra svimlende mængder RAM og eller flere tråde på flere processorer, bør du bedst overlade dem, der har hård erfaring med at opbygge sådanne systemer. Jeg har mange år på banen selv og kan trygt udtrykke, at jeg selv mangler den specifikke erfaring. Ærligt håber jeg at undgå denne eventualitet, fordi high-dollar hardware normalt deltager i højtryksplaner, og de kan også medføre andre problemer. Jeg vil spekulere en lille smule dog - hvis kun fordi det koster dig ingenting ...


Hvis din hensigt er fastgjort ved brug af Windows-platforme, er mit første-order gæt:



  • et klynget servermiljø (mange multikernprocessorer til at knuse et stort antal tråde, støttet af en massiv mængde ledigt RAM)

  • Hardware til avanceret drev - hvis du søger at minimere virkningen af ​​hyppig virtuel hukommelsesadgang, skal du sandsynligvis målrette mod specifikke avancerede hardwareindstillinger, der gør det muligt at bogstaveligt erstatte spindeldrev med mere veltalende DRAM-sticks , det vil sige solid state-drev - ikke den trivielle type, du normalt finder i moderne iPods og mobile PDA'er ... Jeg henviser til real deal - klassisk solid state drives [[ et godt eksempel er her - se under hardware]]. Deres produkter er to til tre størrelsesordener hurtigere end spindeldrev og endda langt hurtigere end forbrugernes solid state (omend ikke billig).



Dine mål synes at angive, at omkostningerne ikke er et stort problem, men det handler om så godt, som jeg kan give dig, mens du mangler mere specifikke oplysninger. [1]


En sidste smule rådgivning, men når man søger hjælp fra ingeniører, er det bedst at fortælle dem præcis, hvad du søger at opnå (målet/målene). Tillad dem at give mulighederne og matche begrænsningerne af virkelighed og moderne teknologi til din dilemma såvel som dine økonomiske mål. Oftere end ikke, selv med esoteriske og excentriske krav, er den bedste løsning faktisk en brugerdefineret 'udenfor-the-box' engineering løsning, som også ender med at være langt billigere at bygge/implementere end en brute Hjælp ingeniører til at hjælpe dig , mens du bemærker, at GIGO-princippet også gælder.


Jeg håber oprigtigt noget, jeg har givet, er nyttigt. Held og lykke.

Andre referencer 1



  Nå, jeg informerede mig om hukommelsesgrænser pr. Proces, og jeg har brug for adgang til meget mere hukommelse. Så min ide var at skabe flere processer og bruge delt hukommelse.



Grænserne for hukommelse pr. Proces er til virtuel hukommelse . Dette betyder stort set, at dit adresserum har en maksimal størrelse (fx 4 gigabyte på et system med 32-bit pointers). Da delet hukommelse er en kortlægning af hukommelse i dit adresserum, er der ingen måde, der får dig ud af det problem, du har. [2]


Husk, at hvis du distribuerer hukommelsesblokkene i flere processer, så vil du til sidst nå grænserne for fysisk hukommelse , og så vil systemets ydeevne forsinke til en gennemgang.


Hvis du virkelig har brug for mere hukommelse end dit system kan give dig, skal du begynde at fortsætte dine data til disk. Hukommelseskortede filer kan give dig mulighed for hurtigt at bytte hukommelsesblokke ind og ud af dit adresserum.