2016-07-06 1 views
0

J'écris une analyse de rentabilisation pour l'implémentation du paramètre lruskips. Je connais les avantages (et ils sont probablement importants). Ce que je ne sais pas, c'est les frais généraux de performance en termes de mémoire, etc. Je devrais considérer comme les inconvénients. Nous avons besoin d'un point de vue équilibré après tout! OpenEdge 10.2B08 Différentes versions de Windows ayant et non ont été corrigées avec Linux.Openedge 10.2B08 surcharge de lruskips

Répondre

1

La fonction élimine les frais généraux en évitant le ménage associé au maintien de la chaîne LRU. L'utiliser n'ajoute aucune exigence de mémoire et réduit la consommation du processeur. Au lieu de déplacer un bloc en tête de la chaîne LRU à chaque fois qu'il est référencé, il fait uniquement référence à X chaque fois. Ainsi, plutôt que d'expulser le bloc qui est absolument "le moins récemment utilisé", un bloc qui est "probablement pas très récemment utilisé" sera évincé. Le seul inconvénient potentiel est qu'il pourrait, théoriquement, être un cas pervers où le réglage trop élevé pourrait entraîner de mauvaises décisions d'expulsion. IOW la partie "probablement" des choses s'avère être fausse parce que vous ne vérifiez pas assez souvent (vous avez fondamentalement converti la gestion -B en une file d'attente FIFO). Par exemple, le paramétrer sur 1000000 avec un -B de 1000 peut ne pas être très intelligent. Supposons que vous l'ayez fait (set -lruskips 1000000 -B 1000) et que votre application ait un mélange d'accès "normal" avec quelques processus d'arrière-plan faisant une sorte de analyse séquentielle pour prendre en charge la création de rapports. Le rapportage va lire beaucoup de données qu'il ne regarde qu'une seule fois (ou très peu de fois). Ces données vont être immédiatement placées à l'extrémité MRU de la file d'attente et se déplaceront vers la fin LRU à mesure que de nouvelles données sont lues.

Même si l'accès est fréquent, le jeu de données "normales" sera poussé vers l'extrémité LRU car la mise à jour du compteur d'accès est ignorée. Avec un smallish -B il va tomber assez rapidement et être expulsé. Et puis l'accès suivant provoquera un IO et le cycle redémarrera. Plus vous définissez -lruskips plus vous serez sensible à ce genre de choses. -lruskips 10 éliminera 90% de l'entretien ménager de lru et devrait être un très, très faible risque. -lruskips 100 éliminera 99% de l'entretien ménager et devrait toujours être terriblement à faible risque (sauf si -B est fou petit). À moins que vous ayez un ensemble de circonstances très spéciales, le réglage supérieur à 100 semble presque inutile. Vous êtes bien dans "rendements décroissants" et peut-être pousser votre chance vis à vis des résultats pervers.