Qu'est-ce qui est plus rapide/meilleur pour la mise en cache, le système de fichiers ou Memcached?

Je ne pense pas que ce soit clair pour moi Encore, est-ce plus rapide de lire des choses à partir d'un fichier ou de memcached? Pourquoi?

23
demandé sur Tshepang 2010-06-30 13:44:15

7 réponses

Memcached est plus rapide, mais la mémoire est limitée. Le HDD est énorme, mais les entrées / sorties sont lentes par rapport à la mémoire. Vous devez mettre le plus chaudes de choses à memcache et tous les autres aller pour les fichiers de cache.

(Ou d'un homme et d'investir un peu d'argent en plus de la mémoire comme ces gars-là:)

Pour certains tests, voir: comparaison des performances de Cache (File, Memcached, Query Cache, APC)

dans théorie:

Read 1 MB sequentially from memory       250,000 ns
Disk seek                             10,000,000 ns

http://www.cs.cornell.edu/projects/ladis2009/talks/dean-keynote-ladis2009.pdf

27
répondu galambalazs 2012-12-09 21:02:56

il y a plusieurs aspects différents qui pourraient favoriser l'un ou l'autre:

  • avez-vous besoin/envie de partager ces données entre plusieurs serveurs? Le système de fichiers est local, memcached est accessible via un réseau.
  • Quelle est la taille de votre cache? Le système de fichiers est susceptible d'être meilleur pour les objets de grande taille.
  • combien de requêtes memcached pourrait-il y avoir par page? Les connexions TCP et les démontages peuvent prendre plus de temps qu'un simple système de fichiers stat() sur la machine locale.

je vous suggère de regarder votre cas d'utilisation, et faire un peu de profilage des deux approches. Si vous pouvez vous en sortir en utilisant le système de fichiers alors je le ferais. L'ajout de memcached ajoute une autre couche de complexité et de points potentiels d'échec (client/serveur memcached).

pour ce qu'il en vaut la peine les autres commentaires sur le disque vs la performance de mémoire pourraient bien être académique comme si les données du système de fichiers est consulté régulièrement alors il sera probablement assis dans le système D'exploitation ou la mémoire cache de disque de toute façon.

13
répondu James C 2010-07-02 13:50:54

"plus Rapide" ne peut pas être utilisé sans contexte. Par exemple, l'accès aux données dans memcached sur un serveur distant peut être "plus lent" en raison de la latence du réseau. En revanche, la lecture de données à partir de la mémoire du serveur distant via un réseau de 10 Go peut être "plus rapide" que la lecture des mêmes données à partir du disque local.

la principale différence entre la mise en cache sur le système de fichiers et l'utilisation de memcached est que memcached est une solution de mise en cache complète. Il y a donc des listes de LRU, le concept d'expiration( fraîcheur des données), certains de haut niveau opérations, comme ac/inc/dec/ajouter/ajouter/remplacer.

Memcached est facile à déployer et à surveiller (comment pouvons-nous distinguer la charge de travail "cache" sur le système de fichiers, disons le noyau? Peut-on calculer la quantité totale de données cachées? Distribution des données? Planification des capacités? Et ainsi de suite).

il y a aussi des systèmes hybrides, comme cachelot Fondamentalement, c'est memcached qui peut être intégré directement dans l'application, donc le cache serait accessible sans aucun appel de système ou les e / s réseau.

3
répondu Cachelot 2016-05-17 21:51:18

Vous êtes awefully vauge sur les détails. Et je crois que la réponse que vous cherchez dépend de la situation. À ma connaissance, très peu de choses ont tendance à être meilleures que l'autre tout le temps.

évidemment, il ne serait pas plus rapide de lire des choses du système de fichiers (en supposant que ce soit un disque dur). Même un SDD sera sensiblement plus lent que les lectures en mémoire. Et la raison en est que HDD / FileSystem est construit pour la capacité et non la vitesse, tandis que la mémoire de DDR est particulièrement rapide pour que la raison.

une bonne mise en cache signifie garder en mémoire les pièces fréquemment consultées et les choses moins fréquemment consultées sur le disque (stockage persistant). De cette façon, le cas normal serait grandement amélioré par votre implémentation de cache. Qui est votre objectif. Assurez-vous d'avoir une bonne compréhension de votre politique de mise en cache idéale. Qui nécessiteront une évaluation comparative et d'essais.

1
répondu John Leidegren 2010-06-30 09:52:50

en fait, il n'est pas aussi simple que la lecture de mémoire est beaucoup plus rapide que la lecture de HDD. Comme vous le savez, Memcached est basé sur la connexion tcp, si vous faites la connexion à chaque fois que vous voulez obtenir sth ou mettre sth sur le serveur memcached(c'est ce que font la plupart des programmeurs), il fonctionne probablement mal que d'utiliser le cache de fichiers. Vous devez utiliser l'objet memcached statique, et réutiliser l'objet. Deuxièmement, les systèmes D'exploitation modernes vont mettre en cache des fichiers qui sont fréquemment utilisés, ce qui rend les caches de fichiers peut être plus rapide que les memcaches qui sont en fait des connexions TCP.

1
répondu Jumbo.Luo 2016-05-17 16:06:05

Ça dépend si le cache est stocké localement. Memcache peut stocker des données sur un réseau, qui n'est pas nécessairement plus rapide qu'un disque local.

0
répondu Nigel Horne 2015-03-07 03:54:39

Type de Cache / Cache Gets / sec

Array Cache / 365000

APC Cache / 98000

Fichier Cache / 27000 Memcached Cache (TCP / IP) / 12200

MySQL Query Cache (TCP / IP) / 9900

MySQL Query Cache (Unix Socket) / 13500

Selecting from table (TCP / IP) / 5100

Sélection à partir de la table (Unix Socket) / 7400

Source:

https://surniaulula.com/os/unix/memcached-vs-disk-cache/

Source de ma source :)

https://www.percona.com/blog/2006/08/09/cache-performance-comparison/

0
répondu l00k 2018-09-05 19:18:07