Minnesanvändning för olika program

Permalänk

Minnesanvändning för olika program

spektralnorm

Folket på Debian har gjort en serie testprogram bla detta i länken.
Det som förbryllar är att man kan ha så olika minneskrav!
8 byte räcker tydligen för att köra 1 tråd.
Nästan alla tester idag på en ny cpu domineras av cache (ofta L2 och L3 mer sällan av L1).
Det blir rätt svårt att se vad cpu i sig duger till.
Vad tror ni om Apple M1 med så små program jämfört med övriga ARM och X86_64?

Permalänk
Hedersmedlem

Minnet anges i kilobyte för testet, och 8 kB för FreePascal låter ju minst sagt suspekt lågt; varför skulle det bara behöva under 1% av vad C kräver? Siffran är nästan garanterat felaktig.

I övrigt är jag lite osäker på vad du menar. Var kommer "små program" in vad gäller M1?

Visa signatur

Asus ROG STRIX B550-F / Ryzen 5800X3D / 48 GB 3200 MHz CL14 / Asus TUF 3080 OC / WD SN850 1 TB, Kingston NV1 2 TB + NAS / Corsair RM650x V3 / Acer XB271HU (1440p165) / LG C1 55"
NAS: 6700K/16GB/Debian+ZFS | Backup (offsite): 9600K/16GB/Debian+ZFS

Permalänk
Medlem

Va? Vet du ens vad du tittar på? Det är registermanipulering som utputtar resultatet på skärmen, overheaden i det här fallet är rätt intetsägande.

EDIT: ... som plusmeny kan vi skriva samma sak i sisådär 90 rader MC680x0-assembler som gör samma sak (med macros) och tar än lägre footprint -- det här är en usel "benchmark".

Visa signatur

ASRock X870E Nova WIFI / Ryzen 9800X3D (CO: -45 AC) / Corsair Vengance 64GB DDR5 6000MHz CL30 / Crucial T705 1TB Gen5 + 5.5TB sekundära / ASUS TUF 4080 Gaming OC / Seasonic Focus GX 850W ATX 3.1 / Acer Predator XB273UGX 1440p 270 Hz G-Sync / FD Torrent Compact / Phantom Spirit 120 SE / Evo 4 / Sennheiser IE 300 / Rode NT1-A
Synology 1621+ 6*16 / 1513+ 5*8 / LG CX 65" / XBox Series X / Switch 2 / Steamdeck OLED

Permalänk
Hedersmedlem
Skrivet av KroesusSork:

EDIT: ... som plusmeny kan vi skriva samma sak i sisådär 90 rader MC680x0-assembler som gör samma sak (med macros) och tar än lägre footprint -- det här är en usel "benchmark".

Ett program som körs på Linux-kärnan (det är ju ett test som körs på Debian) och ger samma resultat med *mindre* än 8 kB allokerat till processen? Låter högst tveksamt. Bara själva binären lär ta upp en nämnvärd andel av det minne du har till godo.

Edit: Följande program:

int main() { for (;;) {} return 0; }

... kompilerat med gcc -Os, använder 796 kB RAM på min Ubuntu server-dator. Plus det som inte räknas in där.

Citat:

The SIZE and RSS fields don't count some parts of a process including the page tables, kernel stack, struct
thread_info, and struct task_struct. This is usually at least 20 KiB of memory that is always resident. SIZE
is the virtual size of the process (code+data+stack).

Visa signatur

Asus ROG STRIX B550-F / Ryzen 5800X3D / 48 GB 3200 MHz CL14 / Asus TUF 3080 OC / WD SN850 1 TB, Kingston NV1 2 TB + NAS / Corsair RM650x V3 / Acer XB271HU (1440p165) / LG C1 55"
NAS: 6700K/16GB/Debian+ZFS | Backup (offsite): 9600K/16GB/Debian+ZFS

Permalänk
Skrivet av Thomas:

Minnet anges i kilobyte för testet, och 8 kB för FreePascal låter ju minst sagt suspekt lågt; varför skulle det bara behöva under 1% av vad C kräver? Siffran är nästan garanterat felaktig.

I övrigt är jag lite osäker på vad du menar. Var kommer "små program" in vad gäller M1?

Ja det ska nog vara 8 kB. Det ryms i alla dagens L1 cache tom i Pentium orginal.
Alla skriver att cache & minne är suveränt hos M1.
Men även cpun är suverän. Men om programmen är stora (som de flesta) ser man aldrig cpun i sig.

Permalänk
Skrivet av Thomas:

Minnet anges i kilobyte för testet, och 8 kB för FreePascal låter ju minst sagt suspekt lågt; varför skulle det bara behöva under 1% av vad C kräver? Siffran är nästan garanterat felaktig.

I övrigt är jag lite osäker på vad du menar. Var kommer "små program" in vad gäller M1?

Mera lika här (men bara enkeltråd):
nbody

Permalänk
Skrivet av Thomas:

Ett program som körs på Linux-kärnan (det är ju ett test som körs på Debian) och ger samma resultat med *mindre* än 8 kB allokerat till processen? Låter högst tveksamt. Bara själva binären lär ta upp en nämnvärd andel av det minne du har till godo.

Edit: Följande program:

int main() { for (;;) {} return 0; }

... kompilerat med gcc -Os, använder 796 kB RAM på min Ubuntu server-dator. Plus det som inte räknas in där.

Frågan är då hur detta påverkar L1 cache som borde klara av små program utan L2 och L3.

Permalänk
Skrivet av Thomas:

Ett program som körs på Linux-kärnan (det är ju ett test som körs på Debian) och ger samma resultat med *mindre* än 8 kB allokerat till processen? Låter högst tveksamt. Bara själva binären lär ta upp en nämnvärd andel av det minne du har till godo.

Edit: Följande program:

int main() { for (;;) {} return 0; }

... kompilerat med gcc -Os, använder 796 kB RAM på min Ubuntu server-dator. Plus det som inte räknas in där.

Hela ditt program borde gå att köra i register.

Permalänk
Skrivet av Thomas:

Minnet anges i kilobyte för testet, och 8 kB för FreePascal låter ju minst sagt suspekt lågt; varför skulle det bara behöva under 1% av vad C kräver? Siffran är nästan garanterat felaktig.

I övrigt är jag lite osäker på vad du menar. Var kommer "små program" in vad gäller M1?

C-programmet använder arrayer.

Permalänk
Hedersmedlem
Skrivet av Greyguy1948:

C-programmet använder arrayer.

Ja, 2*N*sizeof(double) bytes, dvs 2*5500*8 = 88 kB.

Pascal-program har ju " u,v,tmp : array of double;" i sig. Så *tre* arrayer på 3*5500*sizeof(double) (se SetLength senare), gissningsvis är detta 50% mer än C-programmet.

Så redan där syns ju att 8 kB är fel.

Visa signatur

Asus ROG STRIX B550-F / Ryzen 5800X3D / 48 GB 3200 MHz CL14 / Asus TUF 3080 OC / WD SN850 1 TB, Kingston NV1 2 TB + NAS / Corsair RM650x V3 / Acer XB271HU (1440p165) / LG C1 55"
NAS: 6700K/16GB/Debian+ZFS | Backup (offsite): 9600K/16GB/Debian+ZFS