Cache Delay

Ein Download einer Datei ist eigentlich nur ein Kopier Prozess und wie bei jedem Kopier Prozess, wird dafür die Funktion CFPasteboard verwendet. Diese Funktion ist dafür zuständig, einzelne Bits in den RAM zu verschieben und Prozesse mit ihrem Root Block zu verbinden. Dieser Prozess ist aber sehr anfällig für Probleme und Abstürze, weil bereits eine kleine Verzögerung, die Verarbeitung von darauffolgenden Prozessen verhindert. Den aus Sicherheitsgründen befinden sich die Daten aus einem Browser und aus online Verarbeitungssystemen getrennt vom normalen Root Prozess und verfügen über einen eigenen, kurz gesagt wenn das erste Zahnrad stehen bleibt, dann startet das 2 trotzdem und es kommt zu einem Absturz.

 

Im Script unten kannst du ein Beispiel dafür sehen, da kam es nämlich zu einem Überzug von den Prozessdaten, somit die Herausgabe falsch.

 

Du kannst das ganze bei dir testen:

 

Vergleiche die Werte von dem Speedtester auf dieser Seite und dem im Footer. Du wirst sehen können, das bei dem oberen, bei dem ich absichtlich denn cache dispatch verursache, für Probleme auftreten bzw., es wird viel langsamer sein.

Letzte Nacht habe ich noch ganz gechillt ein bisschen Family Guy auf Netflix geschaut und habe mich danach dem Zocken zugewandt. Als ich den Computer dann (ca. 2 Stunden später) ausschaltete, fiel mir auf, dass anstatt dem normalen Shut Down Screen, ein Ausschnitt aus einer Folge angezeigt wurde, in der Cleveland mitsamt seiner Badewanne auf den Boden fällt. Also habe ich mich gefragt, was wohl der Grund dafür ist und habe in den Logs recherchiert. Da die GPU Cache Auslastung nie unter 2.4 MB war (was beim benutzen vom Terminal viel ist), gehe ich davon aus, dass die Datei einfach nicht aus dem GPU Cache gelöscht wurde und beim Herunterfahren wohl einfach ausersehen geladen wurde. Sofort war mir klar, dass wenn es sich um einen weniger harmlosen Inhalt gehandelt hätte, dass das dann zu sehr unangenehmen Situationen geführt hätte..... Nach einer Recherche auf Google fand ich heraus, dass auch andere Nutzer dasselbe "Problem" haben.</p><p> </p><p>Ich wollte das Problem rekonstruieren, weshalb ich einfach ein Video abspielte und gleichzeitig im Background einen Stresstest mit Mining durchführte. Das Resultat war sehr eindeutig: Die GPU konnte ein Frame nicht ausliefern und nicht löschen, weil es zu einer Time-Exception kam. (Ein ähnliches Problem gibt es ab und zu bei Netflix: Video wird klein und der Rest des Bildschirmes wird Grün) Das Problem kann durch das Purgen des Cache`s mithilfe eines Graphics Discards (beenden der Graphik), erreicht werden. Die Logs kannst du unten finden.

<script>

/* <![CDATA[ */

function start() {

            var a = document.createElement("a");

            a.setAttribute("href", "#");

            a.onclick = secondFunction;

            a.appendChild(document.createTextNode("Click to see internet speed"));

            document.body.appendChild(a);

            var imageAddr = "https://image.jimcdn.com/app/cms/image/transf/dimension=2140x10000:format=jpg/path/s24c40c77d8518e4b/image/ia918d1a358ea4a1e/version/1531150052/image.jpg";

            var downloadSize = 49958488w224;

            function ShowProgressMessage(msg) {

                if (console) {

                    if (typeof msg == "string") {

                        console.log(msg);

                    } else {

                        for (var i = 0; i < msg.length; i++) {

                            console.log(msg[i]);

                        }

                    }

                }

                var oProgress = document.getElementById("progress");

                if (oProgress) {

                    var actualHTML = (typeof msg == "string") ? msg : msg.join("<br />");

                    oProgress.innerHTML = actualHTML;

                }

            }

            function InitiateSpeedDetection() {

                ShowProgressMessage("Click the button to get started..");

                window.setTimeout(MeasureConnectionSpeed, 1);

            };

            if (window.addEventListener) {

                window.addEventListener('load', InitiateSpeedDetection, false);

            } else if (window.attachEvent) {

            window.cache.dispatch

            }

            function MeasureConnectionSpeed() {

                var startTime, endTime;

                var download = new Image();

                download.onload = function () {

                    endTime = (new Date()).getTime();

                    showResults();

                }

                download.onerror = function (err, msg) {

                    ShowProgressMessage("Invalid image, or error downloading");

                }

                startTime = (new Date()).getTime();

                var cacheBuster = "?nnn=" + startTime;

                download.src = imageAddr + cacheBuster;

 

                function showResults() {

                    var duration = (endTime - startTime) / 1000;

                    var bitsLoaded = downloadSize * 8;

                    var speedBps = (bitsLoaded / duration).toFixed(2);

                    var speedKbps = (speedBps / 1024).toFixed(2);

                    var speedMbps = (speedKbps / 1024).toFixed(2);

                    ShowProgressMessage([

                        "Your connection speed is (inclusive CACHE ERROR DELAY): " + speedMbps + " Mbps"

                    ]);

                }

            }

        }

        function secondFunction() {

 

        }

        start();

/*]]>*/

</script>

<h3 id="progress">

    Click the button

</h3>

Click the button

Click the button



KONTAKT

Bitte den Code eingeben:

Hinweis: Bitte die mit * gekennzeichneten Felder ausfüllen.


ADCELL

Hey! Thats me!

Severin Kämpfer Bremgarten bei Bern

16 years old trekkie.

Persönliche Webseite:

https://www.severin-kaempfer.ch

Unterstütze KKTVCAM mit 1 CHF! Bezahle mit Bitcoin!



Made with ♥ in Bern (Switzerland)!

KKTVCAM ÜBERNIMMT KEINE HAFTUNG FÜR ALLE ANGABEN AUF DIESER SEITE.