Re: ZFS Cache

From: Bernd Walter <ticso(at)cicely7.cicely.de>
Date: Tue, 29 Jun 2010 12:11:27 +0200

On Tue, Jun 29, 2010 at 11:55:00AM +0200, Alvar Freude wrote:
> Hi,
>
> Ich habe einen Server mit 8 GB RAM und ZFS.
>
> Nun erscheint mir das Cache-Verhalten mit ZFS verbesserungswürdig: die
> Maschine hat noch ca. 1.5 GB RAM frei, aber mir ist aufgefallen, dass
> manche Dateien nicht gecacht werden. Zuerst ist mir das mit einer
> MySQL-Tabelle in gammeligem MyISAM von ca. 500 MB aufgefallen: alter
> Server mit 2 GB RAM und UFS hat die fast immer nahezu komplett im RAM,
> hier auch bei wiederholtem Lesen der Datei nicht.
>
> Aber auch Tests mit ca. 50 MB großen Testdateien zeigten: wiederholtes
> Lesen (time cat file >/dev/null) führen bei ZFS NICHT dazu, dass die aus
> dem Cache kommt. Bei UFS (Root-Partition) schon.
>
> Habe mir daraufhin mal die ARC-Infos angeschaut, Ausgabe von
> arc_summary.pl:
> <http://jhell.googlecode.com/svn/base/head/scripts/zfs/arc_summary/arc_summary.pl>
>
> ARC Size:
> Current Size: 84.97% 1401.29M (arcsize)
> Target Size: (Adaptive) 12.50% 206.14M (c)
> Min Size (Hard Limit): 12.50% 206.14M (c_min)
> Max Size (High Water): ~8:1 1649.14M (c_max)

Damit wird der zwischen 1,6G und 200M hin und her pendeln.
D.h. sobald der über 1,6G ist wird der auf 200M runter-expiren.
Damit passt auch deine 500MB MySQL Datei nicht immer rein.
Mit MySQL solltest du eh die Blocksize vom Filesystem auf 4k setzen.

> Auch nach mehrfachem Lesen einer 50 MB-Datei wird diese nicht gecacht.

Möglich - der führt Statistiken und wenn der andere Daten als
wahrscheinlicher einstuft, dann wird der auch das nicht cachen.

> Es wundert mich, warum auch nach mehrfachem Lesen das ZFS die Datei nicht
> in den Cache packt; immerhin ist ja noch was frei.
>
> Und: Warum wird der Maximalwert für ARC auf nur ca. 1.6 GB gesetzt, ist
> es sinnvoll den in /boot/loader.conf hochzusetzen? Der FreeBSD ZFS Tuning
> Guide sagt, unter AMD64 bräuchte man nichts machen.
> Ich denke ich könnte nochmal 1 bis 1.5 GB zusätzlich für den Cache
> nutzen.

Ich habe meinen Fileserver mit 8G RAM auf 3G/4G ARC eingestellt.
Udn zusätzlich noch Flash-Laufwerke für Level-2 Caching, wobei dort
nur Daten landen, die vorher als Random eingestuft wurden.
MySQL könnte davon aber gut profitieren.
Als Level-2 kann man billige MLC-SSD Laufwerke benutzen, weil es nur
auf random read und sequentiel-write ankommt, aber nicht auf randowm
write oder hohe Zuverlässigkeit.
Wichtiger ist hier die Kapazität.

> Wie läuft das Speicher-Handling, wenn aber doch mal die laufenden
> Prozesse 1.5 GB mehr brauchen? Normalerweise würde dann ja der Cache
> freigegeben werden, klappt das auch mit ZFS sauber?

Leider nein - ein riesen Nachteil des Konzeptes :(
Keine Ahnung wie da der Entwicklungsstand ist.

> Unten noch die komplette Ausgabe von arc_summary.pl.
>
>
> Ciao
> Alvar
>
>
> ------------------------------------------------------------------------
> System Summary Tue Jun 29 11:45:57 2010
>
> FreeBSD 8.0-RELEASE #3: Mon Nov 30 01:39:08 CET 2009 root
>
> Kernel Version: 800107 (osreldate)
>
> Hardware Platform: amd64
> Processor Architecture: amd64
>
> 11:45AM up 128 days, 2:02, 2 users, load averages: 0.14, 0.23, 0.24
> ------------------------------------------------------------------------
>
> Physical Memory: 8175.41M
> Page Size: 4096
>
> Kernel Memory
> TOTAL: 1287.92M
> DATA: 98.82% 1272.71M
> TEXT: 1.18% 15.21M
>
> ARC Summary
> Storage pool Version: 13 (spa)
> Filesystem Version: 3 (zpl)
> Memory Throttle Count: 4
>
> ARC Misc:
> Deleted: 138999579
> Recycle Misses: 121603211
> Mutex Misses: 1086913
> Evict Skips: 1086913
>
> ARC Size:
> Current Size: 84.90% 1400.20M (arcsize)
> Target Size: (Adaptive) 12.50% 206.14M (c)
> Min Size (Hard Limit): 12.50% 206.14M (c_min)
> Max Size (High Water): ~8:1 1649.14M (c_max)
>
> ARC Size Breakdown:
> Recently Used Cache Size: 14.72% 206.14M (p)
> Frequently Used Cache Size: 85.28% 1194.06M (arcsize-p)
>
> ARC Hash Breakdown:
> Elements Max: 299242
> Elements Current: 18.05% 54024
> Collisions: 206642343
> Chain Max: 13
> Chains: 8568
>
> ARC Efficiency:
> Cache Access Total: 2082733740
> Cache Hit Ratio: 91.10% 1897293530
> Cache Miss Ratio: 8.90% 185440210
> Actual Hit Ratio: 78.29% 1630625632
>
> Data Demand Efficiency: 96.14%
> Data Prefetch Efficiency: 90.92%
>
> CACHE HITS BY CACHE LIST:
> Anonymous: 8.90% 168831073
> Most Recently Used: 18.40% 349090905 (mru)
> Most Frequently Used: 67.55% 1281534727 (mfu)
> Most Recently Used Ghost: 1.96% 37150955 (mru_ghost)
> Most Frequently Used Ghost: 3.20% 60685870 (mfu_ghost)
>
> CACHE HITS BY DATA TYPE:
> Demand Data: 46.11% 874749447
> Prefetch Data: 4.81% 91236977
> Demand Metadata: 39.15% 742851680
> Prefetch Metadata: 9.93% 188455426
>
> CACHE MISSES BY DATA TYPE:
> Demand Data: 18.96% 35161281
> Prefetch Data: 4.92% 9116896
> Demand Metadata: 44.68% 82851668
> Prefetch Metadata: 31.44% 58310365
>
> L2 ARC Stats: (enabled with access > 0) 0
>
> VDEV Cache Summary
> Access Total: 137032564
> Hits Ratio: 59.99% 82211532
> Miss Ratio: 40.01% 54821032
> Delegations: 2730924
>
> ZFS Tunable (sysctl):
> kern.maxusers=384
> vfs.zfs.arc_meta_limit=432312320
> vfs.zfs.arc_meta_used=1129673976
> vfs.zfs.mdcomp_disable=0
> vfs.zfs.arc_min=216156160
> vfs.zfs.arc_max=1729249280
> vfs.zfs.zfetch.array_rd_sz=1048576
> vfs.zfs.zfetch.block_cap=256
> vfs.zfs.zfetch.min_sec_reap=2
> vfs.zfs.zfetch.max_streams=8
> vfs.zfs.prefetch_disable=0
> vfs.zfs.recover=0
> vfs.zfs.txg.synctime=5
> vfs.zfs.txg.timeout=30
> vfs.zfs.scrub_limit=10
> vfs.zfs.vdev.cache.bshift=16
> vfs.zfs.vdev.cache.size=10485760
> vfs.zfs.vdev.cache.max=16384
> vfs.zfs.vdev.aggregation_limit=131072
> vfs.zfs.vdev.ramp_rate=2
> vfs.zfs.vdev.time_shift=6
> vfs.zfs.vdev.min_pending=4
> vfs.zfs.vdev.max_pending=35
> vfs.zfs.cache_flush_disable=0
> vfs.zfs.zil_disable=0
> vfs.zfs.version.zpl=3
> vfs.zfs.version.vdev_boot=1
> vfs.zfs.version.spa=13
> vfs.zfs.version.dmu_backup_stream=1
> vfs.zfs.version.dmu_backup_header=2
> vfs.zfs.version.acl=1
> vfs.zfs.debug=0
> vfs.zfs.super_owner=0
> vm.kmem_size=2766798848
> vm.kmem_size_scale=3
> vm.kmem_size_min=0
> vm.kmem_size_max=329853485875
> ------------------------------------------------------------------------
>
>
>
> --
> ** Alvar C.H. Freude, http://alvar.a-blast.org/
> ** http://www.assoziations-blaster.de/
> ** http://www.wen-waehlen.de/
> ** http://www.perl-blog.de/
>
>
>
> To Unsubscribe: send mail to majordomo(at)de.FreeBSD.org
> with "unsubscribe de-bsd-questions" in the body of the message

-- 
B.Walter <bernd@bwct.de> http://www.bwct.de
Modbus/TCP Ethernet I/O Baugruppen, ARM basierte FreeBSD Rechner uvm.
To Unsubscribe: send mail to majordomo(at)de.FreeBSD.org
with "unsubscribe de-bsd-questions" in the body of the message
Received on Tue 29 Jun 2010 - 12:11:51 CEST

search this site