Beiträge von Füchti

    das Fazit ist, dass eigentlich das Startposting reicht plus die Zusammenfassung von Basti in Posting Nr3.

    Der Rest fällt dann mehr unter Diskussion zum Tutorial und bestätigt im Grunde das meiste über mehrere Testreihen.
    Lesenswert ist es gewiss dennoch, aber Posting Nr.1 und Nr3 sind essentiell

    Ich hätte wohl einen eigenen Thread zur Diskussion zum Tutorial machen sollen, sorry, daran hatte ich gar nicht gedacht :S:rolleyes:

    Viele Grüße
    Marcus

    Vertuschen wir das jetzt oder stehen wir dazu? :S:whistling:^^

    Denn damit hätten wir ja doch so ein klein bisschen den Nachweis erbracht, dass der Tweaker von Jesus zumindest nicht die richtigen Werte ausgibt.
    Kann auch ein schlichter Programmierfehler sein ...

    Ansonsten können wir hier jetzt wenigstens mit Fug und Recht sagen, dass wir die AFM wirklch verstanden haben ^^


    Das war und ist eine wirklich spannende und fesselnde Diskussion :):):)

    Viele Grüße
    Marcus

    Mache bitte mal folgenden Test, nämlich den, wenn nicht der erste Kern auf Null steht, sondern der zweite. Warum ? Um den Sonderfall der Bedingungen mit 1en ohne Unterbrechung auszuschließen, der bisher immer vorlag.

    also : 1101 =13

    und: 11111101 = 253

    und poste dann die Bilder.


    Ok, Done. :)

    Hier das Ergebnis (wie erwartet :) )

    AFM_13_u_253.png

    Bei einem 6-Kerner ohne HT würde ich erwarten, dass die CPU's 0 bis 3 identisch verlaufen, bei 253 wird auch CPU 4 und 5 aktiv sein, bei 13 vermute ich, dass die Cores 4 und 5 inaktiv sein werden.


    Ich hab grad mal spaßeshalber nur den AFM-wert 3 eingetragen, in der Erwartung, dass dann Kern 0 und 1 aktiv sind und die Kerne 2 und 3 nicht, ...
    Auch das hat sich bestätigt:
    AFM_3_kl.png
    (Der WErt macht natürlich keinen Sinn, aber mir gehts um das voraussagbare Verhalten)

    Viele Grüße
    Marcus

    Hi Füchti,
    ich würde mir echt nicht anmaßen wollen, Bojote, der dort über Jahre dran gearbeitet hat, anzuzweifeln. Aber jeder darf das machen, was er denkt.


    Hab damit auch gewaltige Probleme ... eben genau wegen dem, was Du sagst.


    Zitat

    Mache doch bitte mal folgenden Test, nämlich den, wenn nicht der erste Kern auf Null steht, sondern der zweite.
    also : 1101 =13 und: 11111101 = 253


    Ich kann ja schon mal vorab schreiben, was ich erwarte:

    13= 00 00 11 01
    Gespiegelt: 10 11 00 00
    Meine Erwartung: CPU0 an, CPU1 aus, CPU2 an, CPU3 an

    253= 11 11 11 01
    Gespiegelt: 10 11 11 11
    Meine Erwartung: Gleiches Bild wie bei 13.

    Schalte ich HT an, erwarte ich bei 13, dass zusätzlich zu den ersten 4 CPU's, die unverändert bleiben, die CPU' 4 bis 7 aus sind,
    bei 253 sind die CPU's 4 bis 7 aktiv, die ersten 4 bleiben ebenfalls unverändert.

    Das werde ich alsbald testen :)

    Ich hab heut Vormittag noch einige Tests gemacht, was die vierstelligen Werte betrifft.
    Ich dachte mir, dass ich bei einem vierstelligen Wert erwarten würde, dass er entweder ignoriert würde oder aber übernommen wird, aber nur soweit, wie er in die Maske passt.

    Das Ergebnis war faszinierend und entsprach meinen Erwartungen.

    Als erstes hab ich einfach willkürlich 1000 eingegeben und mir gesagt, was ich erwarten könnte wäre, dass entweder alle Kerne laufen, wie ein nichtgesetzter AFM ooooder ... das nur die letzte CPU arbeitet, die CPU's 0 bis 2 aber die Füße still halten.
    Warum:

    1000 = 00 11 11 10 10 00
    Gespiegelt: 00 01 01 11 11 00

    Meine Erwartung war, dass die ersten vier Zeichen des umgerechneten und gespiegelten AFM-Wertes (die dunkelblau markierten), egal wie lang es ist, die ersten vier Kerne steuert, die darauf folgenden, hellblauen steuern die nächsten 4 PCPU's.
    Und alles was danach kommt, wird einfach ignoriert und steuert gar nichts, und wenn da hundert Zeichen stehen.
    Der Wert, egal wie lang er ist, wird gespiegelt und die ersten acht Zeichen werden ausgelesen und steuern die CPU's.

    Das Ergebnis:

    Prozessorauslastung: CPU0 aus/ CPU1 aus/ CPU2 aus/ CPU3 an

    Und tatsächllich war nur CPU3 aktiv.
    (Ich hab den Screenshot vergessen ... sorry, hole ich nach.
    EDIT: Hier ist der Screenshot:
    AFM_1000_kl.png

    Dann dachte ich mir, kann auch Zufall sein.
    Also nochmal, ebenfalls willkürlich, den Wert 4021 eingetragen.

    4021 = 11 11 10 11 01 01
    Gespiegelt: 10 10 11 01 11 11

    Sollte meine Annahme (und die Aussage von LM) stimmen, würde als Ergebnis CPU0 ein, CPU1 aus, CPU2 an und CPU3 aus sein.
    Bei einem Achtkerner wären dann CPU4 an, CPU5 an, CPU6 aus und CPU7 an ...
    Das müsste ich noch testen, ich hab HT wieder abgeschaltet.

    Und hier das (nicht verblüffende) Ergebnis ^^ :
    AFM_4021_kl.png

    Prozessorauslastung: CPU0 an/ CPU1 aus/ CPU2 an CPU3 aus :)

    Demnach kann man also jeden beliebigen Binärwert nehmen, die ersten 8 Stellen entscheiden, der Rest wird ingnoriert, so meine Annahme.


    Ich bin echt gespannt, wie das am Ende ausgeht :) und finde das ebenfalls hammerspannend und unglaublich interessant.

    Viele Grüße
    Marcus

    Guten Morgen ^^

    da draußen fällt ja schon wieder dieses komische weiße Zeugs runter ...
    Wir werden noch Ostereier im Schnee suchen.

    Sodele, ... ich hab jetzt wieder eine kleine Testreihe durchgeführt, aber eins nach dem Anderen, da inzwischen glaube ich kaum mehr einer mehr durch den Thread durchsteigt.
    Eine kleine Zusammenfassung dessen, was ich hier nachvollziehen kann:

    AfiinityMask ist eine Maske, ein 8-stelliger Wert, der auch immer Acht Stellen enthält, unabhängig davon, wieviele CPU- Kerne vorhanden sind.

    - Wie eine Schablone, ein Rahmen mit 8 Löchern.
    - Eine 1 bedeutet, man kan hindurchsehen und Daten durchleiten.
    - Eine 0 bedeutet, der Durchgang ist geschlossen.
    - Wird kein AFM-Wert angegeben, ist diese Schablone trotzdem vorhanden, sie hat nur alle acht Türen geöffnet, alle Löcher sind frei.

    - Der AFM, Also der Schablone an sich, ist es egal, ob unter der Schablone ein physikalischer oder ein virtueller oder gar kein Kern steht, es werden immer 8 Luken aufgemcht oder geschlossen.
    Der Rechner ist sich aber im Klaren darüber, dass er keine Daten an einen Kern schickt, der nicht vorhanden ist, aber das ist für die Maske als solche egal.
    - Sind mehr Kerne vorhanden, als die Schablone Löcher hat, dann werden diese zusätzlichen Kerne nach einem Standardverhalten verwendet, so als wäre die Schablone ungenutzt.

    Alles, was ich aktuell sagen kann ist:
    Was ich sehe ist logisch, schlüssig, reproduzierbar, vorhersagbar und entspricht in jeder Hinsicht exakt dem, was Zach vom LM Support ebenfalls erklärt hat.
    Ich kann an keinem Punkt erkennen, dass da was falsch oder unschlüssig wäre.

    Hier sind die Ergebnisse des Tests mit den AFM-Werten 142, 206 und 254 und einmal ein Bild von der Auslastung, wenn AFM nicht in der Config gesetzt wird.
    Erwartungsgemäß ergeben sie auf einem 4-Kerner ohne HT alle das selbe Bild (außer dem letzten natürlich, der wieder eine "Hinterwandkontrolle" ist).
    Was auch vollkommen logisch ist, denn die ersten vier Bits des Wertes sind bei diesen Wörtern immer gleich.
    AFM_Vergleich_02.png
    Was hier übrigens ebenfalls auffällt ist, dass AFM nicht gesetzt einen deutlichen Unterschied gegenüber den anderen Bildern in der Auslastung ausmacht.
    Die Auslastung ist höher und wesentlich ungleichmäßiger (es ist immer noch jedesmal der gleiche Flug, Start EDXF vorm Tower, scharfe Rechtskurve, über die Stadt)
    Auch habe ich dann, obwohl ich BP gesetzt habe, Ruckler und vor allem auch Blitzer.
    Das lässt wiederum vermuten, dass es auch dann Sinn macht, AFM zu setzen, wenn man die BP nicht auf Null stehen hat, wie es bei mir der Fall ist, allein schon um CPU Null für BS & Co freizuhalten.

    Im Moment komme ich nicht drauf, an welcher Stelle ich falsch liege.
    It makes all perfect sense.
    Und es stimmt mit den Angaben von LM überein.


    Und zur Ergänzung nochmal die Auslastungen im FS bei zwei Zuständen in EDDF. Vorweg AFM in P3D ist nur nötig, wenn man BP=0 fährt, sonst ist es nutzlos, weil P3D das im
    Gegensatz zum FSX völlig alleine verwalten kann.


    S.o.
    Das dachte ich an sich auch immer, aber die Auslastungsmonitore zeigen etwas anderes.
    Es scheint also auf jeden Fall Sinn zu machen, die AFM so zu setzen, dass Kern 0 seine Ruhe vor den Fibers hat.


    1. Die CPU entscheidet immer völlig alleine wann sie welche Cores zuschaltet und in welchem Umfange. AFM sagt nur ja oder nein.


    Genau.
    Wenn ich meinen Flusi mit dem LFZ im Stand habe, ist das auch gut zu sehen, alle Screens, die ich gepostet habe, stammen immer aus dem Flug heraus.
    Aber es ist genauso wie Du sagst: AFM sagt, ob Ja oder Nein.
    Insofern ist es egal, wie die Last auf die Cores verteilt wird, solange ich den Rechner dazu bringe, alle Cores, die er nutzen darf, auch zu nutzen und dass passiert eben, wenn ich in diesen Flug gehe.

    Das kannst Du nicht reproduzieren, weil Kerne , die tatsächlich gar nicht da sind , nicht angesprochen werden können. Nicht mal in der Informatik.


    Das meinte ich auch nicht, sorry mein Fehler in der Formulierung.


    Stellen wir und einen Spieler (Werfer) vor der vor einer Wand steht, in der sich 8 Türen befinden.
    Der Spieler soll Bälle werfen und zwar in diese 8 Türen.
    Hinter den Türen steht jeweils maximal ein weiterer Spieler (Fänger), der die Bälle auffangen und ablegen soll.
    Ich kann das Spiel beeinflussen, aber nur über einen Weg: Ich kann Türen öffnen oder schließen.
    Es sind immer 8 Türen.
    Ich kann sie nur öffnen oder schließen, aber weder welche ausbauen noch weitere dazustellen.

    Von sich aus möchte der Werfer die Bälle nach einem bestimmten Schema in die Türen werfen.
    Da die Fänger hinter einer Tür stehen, kann ich als "Zuschauer" in das Spiel eingreifen und entscheiden, welche Tür ich aufmache (1) und welche ich schließe (0).
    Der Werfer kann immer noch selber entscheiden, wie er seine Bälle wirft, aber ich habe entschieden, welche Fänger er überhaupt bedienen darf.
    Dem Werfer ist es egal, ob hinter der Tür ein echter oder ein "virtueller" Fänger steht.
    Wenn er hinter der Tür einen Fänger sieht, dann wirft er ihm wann es ihm passt, Bälle zu.
    Er kann aber sehen, wenn hinter einer Tür kein Fänger steht, also wird er dort auch nicht hinwerfen, egal ob die Tür auf oder zu ist.
    Wenn die Tür, hinter der kein Fänger steht, zu ist, sieht er's eh' nicht und selgst wenn er's wüsste, nützt es ihm nichts, denn es ist ihm auf jeden Fall nicht möglich, dorthin zu werfen.
    Ist die Tür offen, sieht er das aber und wirft nicht. (Es ist also keine CPU hinter der Maske, also wird auch nichts an Daten dorthin geschickt).
    Jetzt kommen noch weitere Fänger hinzu, obwohl ich nur 8 Türen habe (was z.B. bei einem 6-Kerner MIT HT passiert)
    Die stellen sich also einfach rechts neben die Mauer.
    Die haben keine Türen, der Werfer kann sie aber sehen und er wirft ihnen Bälle zu, und zwar so, wie er das gerne mag.
    Auf diese zusätzlichen Fänger kann ich keinen Einfluss nehmen.

    Für mich macht das perfekt Sinn und ich sehe auch, dass das umgesetzt wird.
    Und ich kann an keiner Stelle irgendwelche Zufallsprodukte erkennen, denn dann müsste ich das hier sehen.
    Ich habe aber IMMER die Ergebnisse, die ich voraussage und die ich erwarte.


    Ich suche immer noch einen möglichen Denkfehler, aber ich fürchte diesmal: da ist keiner.
    Möglich ist allerdings, dass wir beide das Gleiche meinen und beschreiben, aber ich das nicht erkenne.
    Das wäre für mich nicht das erste Mal.
    Im Moment vermute ich das aber eher nicht.

    Aber Bojote Thesen sind nicht falsch, das ist etwas sehr kühn.


    Ich muss gestehen, dass mir diese Behauptung von mir auch ein bisschen Angst macht, aber ich komme zu keinem anderen Schluss, obwohl ich die ganze Zeit versuche, mir zu beweisen, dass ich falsch liege.
    Ich gehe wirklich an die Sache heran indem ich sage: "Ich glaube eher Rainer als mir, also muss hier ein Denkfehler vorliegen, ich bin zwar Techniker, aber kein Informatiker"
    Und schon gar nicht würde ich solche Größen wie Bojote anzweifeln ...
    Also versuche ich mich selber zu Fall zu bringen, aber diesmal schaffe ich das einfach nicht.
    Das ist wirklich seeehr kühn, aber es kann auch einfach am Tweaker liegen oder andere Gründe haben, aber nach allem was ich erkennen und nachvollziehen kann, macht es keinen Sinn bei einem 4-Kerner sowohl mit, als auch ohne HT die AFM auf dem selben Wert zu halten und LM bestätigt das.
    Aber ich sage mir immer wieder, dass es ein Denkfehler auf meiner Seite geben muss.

    Allerdings finde ich die von Kostabesser.


    Ja, ich auch, muss die allerdings noch mal durchlesen.
    Da gibt es auch noch Jan Vaane, der sich daran ebenfalls reichlich ausgetobt hat, aber wenn ich das richtig in Erinnerung habe, kommt er zu den gleichen Ergebnissen wie ich, irgendwas war da mal.

    Rätselnde, aber sehr faszinierte Grüße ^^
    Marcus


    Ich denke schon ;)


    Ja,... das war unglücklich von mir formuliert.

    Gehen wir über die Maske:

    Die Maske hat 8 Stellen.
    Deine CPU hat 6 Kerne.
    Damit ist es problemlos möglich, alle Kerne zu steuern, aber eben immer über die Maske betrachtet.

    M M M M M M M M
    K K K K K K X X

    Es sind ja zwei Stellen in der Maske überzählig.

    Jetzt setzen wir Werte ein, der erste Kern soll nichts machen, der Rest voll mitarbeiten ist ja kein HT):

    M M M M M M M M
    0 1 1 1 1 1 X X
    K K K K K K X X

    Bei den letzten beiden Stellen ist es egal, ob sie auf Eins oder Null stehen.
    Denn da liegt ja kein Kern drunter.
    Also wäre die Möglichkeit entweder
    01 11 11 00
    oder
    01 11 11 11

    Gespiegelt ergeben sich folgende Binärworte:

    00 11 11 10
    und
    11 11 11 10

    Daraus ergeben sich die Dezimalzahlen:
    62
    254

    Wobei ich gerade feststelle, dass ich mich in einem der vorigen Postings verhaspelt haben muss, weil ich da mit HT an und HT aus etwas durcheinandergekommen bin, da muss ich noch mal schauen, aber das ändert am Grundsatz an sich nichts.

    Egal welchen der beiden Werte Du in der AFM eingibst, das Ergebnis in der Prozessorauslastung muss, sollte ich richtig liegen, das selbe sein.

    Sowohl 62 als auch 254 ergeben bei einem 6-Kerner ohne HT reproduzierbar das selbe Resultat.
    Bei einem 8-Kerner jedoch ist neben den ersten

    Das würde ich jedenfalls erwarten.

    Im Moment sehe ich allerdings, dass ich wohl etwas vom Kurs abgekommen bin, weil ich HT on und 6 Kerner ohne HT etwas durchgemischt habe.

    Nach wie vor bin ich aber der Meinung, dass der Wert 84 für den 4-Kerner mit HT der richtige ist.

    Vierkerner ohne HT fahren mit 14, aber 254 oder 142 oder 206 usw. usw. würden z.B. das gleiche Ergebnis erzielen, denn auch wenn ich für die Cores 4 bis 7 Werte angebe, bewirkt das nichts, weil hinter Maske kein Kern steht.
    Das werd ich auf jeden Fall mal spaßeshalber durchtesten.
    14 bedeutet lediglich, dass die hinteren 4 Kerne auf Default Behavior stehen.
    Bei einem echten 8-Kerner ohne HT würde das bedeuten, dass Kern 0 aus ist, Kern 1, 2, 3, sind an, Kern 4 an, Kern 5 aus, Kern 6 an, Kern 7 aus.
    Was echte Verschwendung wäre.
    Auf jeden Fall muss berücksichtigt werden, ob HT an ist und damit jeder zweite Thread, also jede zweite CPU deaktiviert werden muss, oder ob HT off ist und damit jeder Kern, bis auf den ersten, laufen soll.

    Bei einem 6-Kerner ohne HT geht entweder 62 oder 254, wobei 62 der wäre, den ich vorziehen würde, aber nur der Schönheit halber.
    Von dr Wirkung her sind beide gleich.

    Und sorry, Bojotes Tweaker ist falsch, was der rausgibt ist nicht logisch.

    Und ich tweake mich jetzt in die Koje :)

    Wie gesagt, ich versuche in erster Linie den Denkfehler bei mir zu suchen, aber hier macht mir da echt mal Probleme :).


    Denk was Du willst, aber Deinen Ansatz halte ich für falsch. AFM ist kein 8-Bit Wort , sondern ein Maskierungswert für die Kerne.


    Denn das ist genau der Punkt, das ist eine Maske, und zwar ein feste Maske die immer aus 8 Einsen oder Nullen bestehen muss.

    Welcher Wert an welcher Stelle ist, lasse ich mal für einen Moment außen vor.

    Wir haben einmal eine Maske, die immer gleich groß ist, nämlich aus 8 Zeichen besteht.
    Die gegenüberstehende Komponente sind die CPU's, die eine Variable sind, denn sie können von 1 bis X Kerne gehen.


    Es gibt also drei mögliche grundsätzliche Fälle, die eintreten können:
    Weniger Kerne als die Maske
    Genausoviel Kerne wie die Maske
    Mehr Kerne als die Maske.

    Ich nehme den Buchstaben "M" als Platzhalter für einen beliebigen Wert der Maske, also entweder 1 oder 0, das ist egal:

    Fall 1: Weniger Kerne als die Maske (2-Kerner, Platzhalter "K")

    M M M M M M M M
    K K X X X X X X

    Die Kerne holen sich die Werte, die über ihnen in der Maske stehen.
    Ist kein Kern über dem wert, ist da auch nichts.

    Fall 2: Genausoviel Kerne wie Anzahl der Maskenstellen:

    M M M M M M M M
    K K K K K K K K

    Jeder Kern hat über sich einen Maskenwert, alles gut.


    Fall 3, Mehr Kerne als die Maske Stellen hat (z.B. 6-Kerner, HT an):

    M M M M M M M M X X X X
    K K K K K K K K K K K K

    Die letzten vier Kerne bekommen keine Werte mehr, weil die Maske schon zu Ende ist, also verfahren sie nach Standard Behavior.
    Die ersten acht Kerne holen sich die Werte, die über ihnen inn der Maske stehen.
    Die Maske hat immer die gleiche Größe und die Kerne schauen immer ihrer Nummrung folgend auf den gleichen Wert in der Maske.
    Das macht es ja zu einer Maske.


    Die "X" zeigen an, dass hier entweder ein Wert der Maske ins Leere läuft oder eine CPu keinen Wert aus der Maske erhält.

    Das genau ist das, was ich unter einer solchen Maskierung verstehe, alles andere würde in meinen Augen keinen Sinn ergeben.

    Wie gesagt, ich suche meinen Denkfehler, aber hier sehe ich tatsächlich keinen.

    Es mag ein wenig beirrend wirken, dass der Zahlenwert in der Eingabe 256 Möglichkeiten besitzt, während es nur 16 Möglichkeiten bei einem 4-Kerner ohne HT gibt, aber die Maske zeigt, dass das logisch ist.

    Die Maske hat IMMER 8 Stellen, so verstehe ich das und der Zahlenwert bestimmt nur, an welcher Stelle eine Null und an welcher eine Eins steht.

    Und die Tests bisher bestätigen das.


    Wie gesagt: Ich suche immer als erstes meinen Denkfehler und ich schließe auch hier nicht aus, dass ich falsch liege, aber bis jetzt konnte mich alles davon überzeugen, dass mein Verständnis schlüssig ist, sowohl seitens der Logik, als auch seitens der erkennbaren Ergebnisse über die Auslastung des Systems.


    Vergiss mal die 8 Bit, die geben nur die Anzahl der Möglichkeiten an, führende Nullen sind inaktiv, es sei den es sind acht Kerne da. Der Wert ist ein reiner Maskierungswert, der lediglich anweist, welche Kerne genutzt werden dürfen.


    Da der Wert von rechts nach links ausgelesen wird und 8 Bit lang ist, kann da keine führende inaktive Null sein.
    Das 8-Bit wort spricht 8 Kerne an, immer, auch wenn nur ein, zwei, vier, sechs, acht oder Zwölf Kerne im System vorhanden sind.
    Das kann ich auch nachvollziehen und reproduzieren.

    Hat ein System weniger Kerne, sind die Einstellungen über diese Kerne hinaus wirkungslos.
    Hat ein System dagegen mehr Kerne, werden 8 Kerne über die Mask eingestellt, die übrigen laufen im Default Behavior weiter, ein HT Kern wird also den ersten Thread benutzen, den zweiten nicht, ein Nicht HT Kern wird genutzt.
    Es werden keine Nullen ignoriert.
    Das kann ich auch sauber reproduzieren und alles was ich im voraus erwarte, trifft auch ein.
    Zumindest dahingehend bin ich mir ganz sicher.

    Zitat

    Nochmal 62 = 111110

    Hier wird - analog wie bei einem 4-Kerner- der erste Kern ( gelesen wir immer von rechts nach links, weil das Dualsystem mit Potenzen von 2 arbeitet) für die Fibers und die restlichen 5 für den Flusi genutzt.
    Das entspricht dem gleichen Prinzip wie beim Vierkerner 14.
    Generell sind immer so viele Zahlen zu kodieren, wie Kerne da sind, auch wenn man mit HT arbeitet, also dann bei Vierkerner 8 mit den virtuellen.


    ich hab das soweit verstanden, knabbere aber noch ein wenig daran rum.
    Ich kann das nachvollzuiehen, aber das geht irgendwie nicht so auf, wie Du es erklärst, zumindest sehe ich das nicht.
    62 heißt bei einem 4-Kerner OHNE HT: CPU0 aus, CPU 1 an, CPU2 an, CPU3 ander Rest wird ohnehin ignoriert, weil es die Kerne ja nicht gibt.

    Bei einem 4-Kerner MIT HT würde das aber heißen: CPU0 aus, CPU 1 an, CPU2 an, CPU3 an, CPU4 an, CPU 5, an und wenn es stimmt, dass führende Nullen unberückichtigt bleiben, wobei ich hier noch nicht sicher bin, das teste ich aer gerne noch mit aus, dann müsste CPU6 an sein und CPU7 aus.
    Da ich aber davon ausgehe, dass die Nullen mit berücksichtigt werden, würde dieser Wert besagen, dass sowohl CPU6 als auch CPU7 aus sind, der vierte Kern ist also komplett mit beiden Threads abgeschaltet.
    Werde versuchen das morgen mal zu machen und einen Screen davon anzulegen.

    Zitat


    Letztlich macht das kodieren von virtuellen Kernen als Maske im Flusi aber wenig Sinn. Diese können überhaupt nur bedient werden, wenn der Hardwarekern Rechenpausen hat. Folge es entstehen Miniruckler im FS, weil die CPU dann wenn tatsächlich der virtuelle Kern arbeitet, "waits" an den Hardwarekern senden muss. Ist also der FS unter Volllast, dann sind die virtuellen Kerne schlicht eine Bremse.


    Deswegen ja wird ein virtueller Kern abgeschaltet, so dass sich der Prozessor im Prinzip so verhält, wie ein Vierkerner ohne HT.


    Zitat


    84 ist deswegen ein Wert der nicht existiert, denn der würde 7 Kerne voraussetzen: 1010110


    Nein falsch.
    Wie gesagt, ich fürchte, dass die Angabe mit den nicht berücksichtigten Nullen nicht stimmt und ich kann das glasklar nachvollziehen.
    84 bedeutet 01 01 01 00 und genau so wirkt sich der Wert auch aus, das ist in den Graphen des Systemmonitors deutlich zu erkennen.
    Der Wert spricht IMMER 8 Kerne an, also muss es auch ein 8-Bit Wort sein und alle Zeichen des Wortes müssen gelesen werden.
    Das dies auch stimmt, kann man sehen.
    CPU0 und CPU1 sind aus für die Fibers, CPU2 ist an, CPU3 ist aus, CPU4 ist an, CPU5 ist aus, CPU6 ist an, CPU7 ist aus.
    Das zeigen mir die Lastmonitore hier sauber an.


    Zitat


    Hier macht die CPU irgendwas , aber nicht dass was man vermutet. Wenn HT eingeschaltet ist, muss Du auch 8 Zustände codieren und nicht 7.


    Es sind auch 8, weil es ein 8-Bit Wort ist und das mit allen Nullen ausgelesen wird, da bin ich mir sicher und das kann ich hier reproduzieren und die CPU macht ganz exakt das, was ich vermutet und ewartet habe und wenn Binfort schreibt, dass seine Auslastung mit meiner identisch ist, scheint das auch bei ihm reproduzierbar zu sein.

    Ich bin mir inzwischen recht sicher, dass das gesamte Wort mit allen Nullen ausgelesen und ausgewertet wird.
    Ich kann auch 204 eingeben, das entspricht 1100 1100, gespiegelt 0011 0011, dann sehe ich in den Graphen bei einem 4-Kerner, HT an, dass CPU0, CPU1 aus sind, CPU2 und 3 feuern, CPU4 und 5 machen nichts, CPU6 und 7 feuern.
    Nur macht das keinen Sinn, weil ich dann zwei Kerne gar nicht nutze und die anderen beiden eben besagte waits produzieren, weil sie in den gleichen Ressourcen hängen.
    Aber jede dieser Änderungen ergibt ein reproduzierberes und voraussagbares Ergebnis in den Graphen, das ist schon recht eindeutig.

    Viele Grüße
    Marcus


    Manchmal weiß eben der Support nicht was er da so redet, dass ging beim FSX und geht auch bei P3D


    Wie gesagt, ... im Zweifel glaube ich eher Dir als mir :).

    Allerdings bin ich jetzt gerade leicht verwirrt:

    Zitat


    Das ist AFM 62 nehme ich die oberen Kerne durch Änderung weg, dann sind sie auch nicht ausgelastet.


    AFM62 ist ja als 2-stelliger Dezimalwert in der 8-Bit-Range.
    Als 8-Bit Wort ausgedrückt wäre das 00 11 11 10

    Gespiegelt, da von rechts nach links ausgelesen ergibt das für die CPU's von 0 bis 7:
    01 11 11 00
    Demnach müsste auf CPU0 wenig Last liegen (trifft zu), CPU1 fährt mehr Dampf, weil der Thread von Sim benutzt wird (trifft ebenfalls zu), die CPU's 2 und 3, sowie 4 und 5 fahren Volllast unterm Sim, trifft ebenfalls zu, und die CPU6 müsste ebenfalls noch ackern, CPU7 aber müsste still sein.
    Die folgenden CPU's, eben die über CPU7 müssten dann im Wechsel Voll, ungenutzt, Voll, ungenutzt usw. laufen.

    Allerdings verstehe ich den Wert 62 nicht und kann nicht erkennen, wie der zustande gekommen ist.
    Ähnlich ist es mit AFM56.
    Dafür ist das 8-Bit-Wort 00 11 10 00, wieder gespiegelt weil von rechts nach links ausgelesen:
    00 01 11 00
    CPU0 aus, CPU1 aus, CPU2 aus, CPU3 an CPU4 und 5 an, CPU6 und 7 aus, danach dann wieder alle weiteren CPU's, gerade an, ungerade aus.

    Zitat

    Im übrigen sagt unterschiedliche Auslastung der Kerne optisch nichts aus, weil die CPU dies selber regelt, ja nach Bedarf.


    Das verstehe ich nicht.
    Das lässt sich meiner Ansicht nach hervorragend erkennen, allein schon dann, wenn der Sim pausiert wird, dann fallen die Kerne, die den Sim fahren, sofort auf Null Auslastung, während Kern 0 bei mir nur gering veränderte Auslastung zeigt.
    Wenn ich auf dem Holzweg bin, dann sehe ich gerade nicht wo und wie :S

    Nach dem, was ich hier sehe, lässt sich das reproduzieren.
    Und die von Dir genannten Werte sind keine Vierstelligen, alles unter 255 wird auch angenommen, aber immer nur auf die ersten 8 Kerne, alles darüber sollte 1-0, 1-0 usw. gefahren werden, was ich aber eben hier nicht austesten kann.

    Viele Grüße
    Marcus

    Wat ihr hier schreibt sind für mich alles böhmische um nicht zu sagen gar chinezische Dörfer.

    Ich bin einer von denen, die sowas nicht wissen - echt keinen Plan.


    Die gute Nachricht ist:
    Wenn Dein Flusi gut läuft, braucht man das auch nicht zu wissen.

    Es kann aber durchaus von Nutzen sein.

    Ok,... ich versuch eine Kurzfassung :)

    Moderne Prozessoren sind meistens Multicore-Prozessoren, also ein Gehäuse, in dem mehrere Prozessorkerne gemeinsam untergebracht sind.
    Ein QuadCore Prozessor hat 4 CPU-Kerne, man hat also mehr oder weniger 4 Prozessoren in einem Gehäuse (wie gesagt: Vereinfachte Kurzfassung)
    Schön und gut soweit ...
    Um auch alle Kerne für ein Programm zu nutzen, muss dieses Programm das auch können, es muss also so programmiert sein, dass es mehrere Berechnungen auf die einzelnen Kerne verteilen kann.
    Das ist nicht so einfach, aber es geht eben :).
    Im Normalfall entscheidet also die Software, wieviele und welche Kerne genutzt werden und auch wie diese genutzt werden.

    Zitat


    Wer oder was ist "affinity mask"? Klingt mir ganz nach irgendeinem Teufelszeug.


    Die kommt jetzt ins Spiel und ist zum Glück nicht ganz so teuflisch, wie man meinen mag ... aber ein Engel ist sie auch nicht ... irgendwas dazwischen...
    Die Affinity Mask gibt dem Anwender die Möglichkeit mitzubestimmen, wie das Programm die Prozessoren benutzen soll.
    Da fragt man sich natürlich, warum man das als Anwender tun sollte, die Software weiß das doch viel besser und die Frage ist berechtigt, denn in den meisten Fällen ist es besser, die Finger von sowas zu lassen, ... aber eben nur in den meisten...

    Warum also ist es hier interessant?
    Weil man damit wunderbar sortieren kann, wenn man genug Ressourcen zur Verfügung hat.

    Wr bleiben kurz bei unserem 4-Kerner, der zeigt Dir, wenn Du den Task Manager aufrufst, 4 CPU's an, wenn Du das Register Leistung anwählst.
    Ich kann über die AffinityMask der Software sagen, dass sie z.B. den ersten Kern in Ruhe lassen und nicht benutzen soll, sondern sich nur auf den anderen Dreien austoben soll.
    Verschwendung möchte man meinen und ja, ... irgendwie schon.

    Aber auf dem ersten Kern liegt auch das Betriebssystem und einige andere Prozesse, die im Hintergrund laufen.
    Wenn da jetzt auch der Flusi drauf rumwerkelt, dann beharken die sich schnell mal, denn jeder Koch will seine Suppe kochen und das auf dieser einen Kochstelle.
    Das wäre auch nicht so schlimm, denn die Kochstelle ist an sich groß genug, nur ist die Anzahl der Helfer begrenzt, die die Zutaten rein und rausbringen können, die müssen von allen gleichsam genutzt werden und jeder will der erste sein, der seine Möhren in die Suppe wirft und so kriegen die sich dann gerne mal in die Haare ... (Aha ... daher wohl der Ausdruck "Haare in der Suppe :huh: ...).
    Am Ende merkt das dann derjenige, der vor dem Rechner sitzt, weils ruckelt und hakelt.

    Also verbieten wir über diese AfifinityMask dem Programm, den ersten Kern zu benutzen, das darf sich auf dem Rest austoben und der erste bleibt für andere wichtige Dinge frei (und da gibt es eben mehr als nur die genannten, aber das soll ja 'ne Kurzfassung werden :) )

    Zitat


    Wo finde ich das? Wie stelle ich da was ein? Im BIOS?


    Wenn die Antwort ehrlich sein soll: Wenn kein Plan vorhanden ist, findet man das am besten gar nicht ^^:whistling:
    Aber kaputtmachen kann man da auch nichts, also findet man das in der FSX.cfg bzw. analog zum Prepar3D in der Prepar3D.cfg.

    Dort ist das standardmäßig nicht vorhanden, der Eintrag muss eigens erstellt werden.
    Der Eintrag beginnt mit der Section [Jobscheduler]
    Und dann folgt AffinityMask= ... und dann der entsprechende Wert.
    Bei einem Vierkerner ohne Hyperthreading (also wenn Du im Taskmanager nur 4 CPU's siehst), dann ist der richtige Wert 14.
    Siehst Du im Taskmanager 8 CPU's, dann trägst Du 82 ein.

    Läuft Dein Flusi aber zu deiner vollen Zufriedenheit, trägst Du gar nichts ein :).

    Einen Versuch ist es wert, aber wie immer: die cfg vorher sichern und im Zweifelsfall die Änderungen wieder zurücknehmen und immer nur eine Änderung zur Zeit, sonst Chaos und Autsch.


    Sagte ich Kurzfassung??
    Jap ... ist eine ^^

    PS: Ähm, ... wolltest Du das eigentlich überhaupt wissen oder einfach nur sagen, dass es böhmische Dörfer sind? ?(:S

    Viele Grüße
    Marcus

    Hallo Rolfuwe


    Nun kann man ja nicht die ganze Welt kontrollieren. Aber ich finde es nun mal schwach, daß man die mir bekannten FSX-Fehler auch wieder 1:1 im P3D findet.


    das sit allerdings ein Punkt, an dem ich zustimme.
    Es gibt da auch einige fiese Stellen, an denen die Mesh's oder LC's komplett aus dem Ruder laufen.
    Neulich wollte ich mal schauen, wie die Kanaren so aussehen, stand mit dem Heli auf Fuerteventura und hatte das Gefühl, mitten im Grand Canyon zu stehen 8|
    Da gibt es noch einige Stellen mehr, an denen wohl dahingehend etwas völlig schief gegangen ist, im LM Supportforum gibt es einen eigenen Thread dazu.
    Was ich nicht weiß ist, ob es diese Fehler auch schon im FSX gab, ... sollte ich vielleicht mal schauen ...
    Auch LM kocht nur mit Wasser, das darf man nicht verschweigen und da gibt es auch nichts schönzureden, ... außer dass man vielleicht sagen kann: Immerhin kochen sie ... beim FSX ist die SW an sich ausgekocht.

    Das erste was LM damals gemacht hat war wohl, die GUI Win7 tauglich zu machen.
    Das sind so Kleinigkeiten, die vielleicht nicht die Welt bedeuten, aber immerhin bewegt sich was.
    Das hat z.B. zur Folge, dass man im Fenstermodus nicht erst über den Taskmanager den DWM-Manager (Aero) abschalten muss, damit vsync im Fenstermodus funktioniert ... das funktioniert jetzt eben einfach.

    Aber wie gesagt:
    Das soll kein Werbeposting zum Wechsel auf P3D sein, wirklich nicht.
    Never change a running system.
    (Naja ... ich hab halt ein neues System aufgesetzt :D^^^^ )

    Viele Grüße
    Marcus


    Danke erst mal für den Beitrag, aber eine kleine Korrekur sei angebracht. Da ich einen 6- Kerner habe ist auch AffinityMaks bis 4095 möglich, wenn alle Kerne mit HT eingeschaltet sind.Die obige Beschränkung gibt es also nicht.


    Das ist zumindest gemäß den Aussagen von LM (ist es ok, wenn ich als Quellenangabe dorthin verweise?) nicht der Fall:

    Zitat von LM Support


    The affinity mask is a one byte ( 8 bit ) mask that tells our job scheduler which logical processors to schedule jobs on. If you have a 6 core processor with hyper threading, i.e. a 3960x, 3930k, etc., your processor has more cores than are covered by our bit-mask. Nevertheless, Prepar3d's default behavior seems to be to use one of the threads on each of the two extra cores. This is the desired behavior, so I see no reason to worry about it.

    Zitat von LM Support


    The affinity mask is only 8 bits. That means that you can only explicitly control how tasks get mapped to 8 of the 12 logical cores. Inputting values larger than 255 into the affinity mask has no effect. As I mentioned before however, the default behavior seems to be to use cores 8 and 10, so there is no real cause for concern. I believe that 84 is usually the best value for Intel 4 and 6 core chips with hyper threading.

    Ich kann das hier ja leider nicht nachvollziehen, aber tatsächlich stimmt es ja, dass das native Verhalten der Sim's (und da gehe ich davon aus, dass FSX und P3D gleich sind, das zeigen auch meine Test hier) so ist, dass ohnehin nur der erste Thread eines jeden Cores verwendet wird.
    Ein 8-Bit Wort wie 84 wird sich dann zumindest auf die ersten 8 Cores auswirken, was ja auch vollkommen ausreicht, denn dann sind CPU 0 und 1 raus aus dem Rennen, CPU 2 bis 7 werden über die mask noch gehändelt, die CPU's 8 bis 11 laufen sozusagen frei, in ihrem nativen Verhalten, was ja wie gewünscht nur ein Thread pro Core bedeutet.
    Wobei mich dann aber interessieren würde, wie diese Cores dann in der Auslastung sind, also ob die ebenfalls so gleichmäßig fahren oder ob es da dann diese Berg-und-Talfahrt gibt.
    Da waren die Grafiken ja teilweise wirklich extrem unterschiedlich (ich würde da vielleicht mal einen längeren Flug machen, um zu schauen, inwiefern sich das für den Anwender überhaupt bemerkbar macht).
    Diese Schwankungen von teilweise 10/ 30% hoch auf 98% fand ich schon üppig ...


    Laut LM werden Eingaben oberhalb 255 aber nicht berücksichtigt.

    Ich kann das aber hier leider nicht testen ... könntest Du mal bei Gelegenheit einen Screen von der Auslastung bei Dir machen?
    Das wär echt prima, denn was 6-Kerner angeht, kann ich nur ganz vorsichtige Aussagen treffen un nur weitergeben, was ich mir nur angelesen habe.
    Und nach wie vor gilt fürmich, dass ich im Zweifel eher Dir als mir glaube :).

    Hi again,

    Bei mir steht, auf Empfehlung von Bojote's FSX Tweaker, und auch aus anderen Foren empfohlen AffinityMask=14

    Ich hab einen Intel Quad mit HT aktiviert ... Daher wäre 84 laut deinem Tutorial die besser Wahl?


    Das hat mich jetzt nicht losgelassen und daher habe ich mal spaßeshalber HT bei mir aktiviert und eine kleine Testreihe durchgeführt (war eh um 4 wach, da kann ich auch was nützliches machen :D )

    Die Ergebnisse fand ich ganz interessant und nicht alles hätte ich auch so erwartet.

    Als erstes habe ich den AffinityMask- Wert auf 255 gesetzt, also alle Kerne mit jeweils allen Threads aktiv:
    FSX_Affinity_Mask_255.png
    Somit wusste ich schon mal, dass mit diesem Wert auch wirklich alle Threads verwendet werden.
    Das war sozusagen eine Hinterwandkontrolle.


    Als zweites kam dann der Test mit AffinityMask=252, was bedeutet, dass der erste Core abgeschaltet bleibt, alle anderen aber mit allen Threads zur Verfügung stehen:
    FSX_Affinity_Mask_252.png


    Als drittes kam dann der Test mit dem Default-Verhalten des Sim's, also Betrieb ohne einen AffinityMask Eintrag:
    FSX_Affinity_Mask_Default.png
    EDIT: Was ich hier interessant finde und mich ein wenig verwundert hat ist, dass sowohl der FSX, als auch P3D von sich aus die Finger von den zweiten Threads lassen und nativ nur den ersten Thread jedes Cores ansprechen.
    Das hätte ich nicht erwartet.
    Ist aber im Endeffekt egal, da wir ja den Core 0 komplett freihalten wollen.


    Als viertes wollte ich dann sehen, wie die Prozessoren fahren, wenn AffinityMask auf 14 steht:
    FSX_Affinity_Mask_14.png
    Da brauchts nicht viel an Erklärung um zu sehen, dass das nicht optimal ist :)


    Dann kam als fünftes der Test mit AffinityMask 84, der ja bei 4-Kernen mit eingeschaltetem HT empfohlen wird:
    FSX_Affinity_Mask_84.png
    Das entspricht auch meinen Erwartungen und ist das, was ich als gut ansehen würde, denn wie man hier sieht, ist die Last homogen, während in den oberen Bildern deutlich zu sehen ist, wie extrem die Auslastung schwankt.
    (das ist alles immer der selbe Flug, EDXF, Start vorm Tower mit der Lama, Rechtskurve und dann über die Stadt)
    Hier waren auch die optischen Eindrücke am besten (ist halt kein ewiges Anfahren-Bremsen, sondern ein sauberes rollen, um bei der Auto-Metapher zu bleiben)


    Als sechstes habe ich dann noch einen Test gemacht, diesmal mit AffinityMask=85, was bedeutet, dass nun auch Core 1 mit dem ersten Thread mitarbeiten sollte, was auch der Fall war.
    (aber nicht zu empfehlen ist, ich wollte die Testreihe nur komplett haben :whistling::(
    FSX_Affinity_Mask_85.png


    Und weil es so hübsch aussieht, habe ich das dann auch mal als Gesamtübersicht zusammengestellt, da kann man einiges etwas deutlicher erkennen:
    Affinity_Masks_Leistung_Gesamtuebersicht.png

    Ich persönlich sehe da, dass die Einstellung 14 für einen 4-Kerner mit HT nicht optimal ist.


    Und da Marcus nun einer ist der ganz in meiner Nähe wohnt wäre das ja auch so mal zum Austausch was nettes :friends:


    Das ist ja wirklich ziemlich in der Nähe :).

    Heide kennen wir auch ein wenig, meine Frau und ich sind da gerne hingeflogen, Heide Büsum ist ein echt schöner Platz, Fahrradverleih direkt am Platz für kleines Geld, mit dem Rad runter zum Strand, und anschließend wieder nach Hause fliegen, eine echt schöne Strecke von einer echt schönen Ecke :)
    Wird dann allerdings nur noch ein Besuch mit dem Auto, wäre aber möglich :)

    Viele Grüße
    Marcus

    Bei mir steht, auf Empfehlung von Bojote's FSX Tweaker, und auch aus anderen Foren empfohlen AffinityMask=14

    Ich hab einen Intel Quad mit HT aktiviert ... Daher wäre 84 laut deinem Tutorial die besser Wahl?


    Meiner Meinung nach: Ja.

    Ich habe beim Bojote Tweaker bemerkt, dass es dem völlig egal zu sein scheint, ob man im Auswahlfeld für die CPU's 4 oder 8 Kerne/ Threads angibt und es ist auch egal, ob man anklickt HT an oder aus, der spuckt immer einen Affinity Wert von 14 aus, ... was in meinen Augen vollkommen unlogisch ist.

    Das kannst Du aber ganz einfach testen.

    Wenn Du über Ctrl-Shift-ESC den Taskmanager aufrufst und auf den Register "Leistung" gehst, dann müsstest Du dort 8 Scope-Grafiken sehen.
    Bei laufendem Flusi kann man sehr deutlich erkennen, welche Cores/ Threads aktiv sind und welche nicht.
    Bei richtig eingestelltem wert, sollten die ersten beiden Threads nicht auf Vollast laufen und danach jeder zweite, genaugenommen Core 2, 4 und 6.
    Die Cores 3,5 und 7 sollten nicht fahren.

    Stimmt dies, ist es ok, wenn nicht, würde ich das ändern.

    Ich kann davon hier jetzt leider keinen Screenshot machen, da ich HT auf meinem Rechner abgeschaltet habe, ich profitiere hier nicht davon.

    Ich habe aber vor kurzem einige Screens angefertigt, dabei ging es zwar um vsync, aber vielleicht gibt es zumindest einen Anhaltspunkt:
    FPS_40_02.png
    Im Taskmanager kann man sehr gut sehen, wie die Affinity Mask 14 bei einem 4-Kerner wirkt:
    Der erste Kern wird freigehalten, da läuft das BS drauf und einige andere Prozesse, während die anderen drei Kerne deutlich unter Last stehen.
    So müsste es bei Dir dann auch in etwa aussehen, nur eben mit 8 Kernen und ab Kern 2 nur bei jedem zweiten unter voller Last.

    Ohne Affinity Mask würde auch Kern 0 unter Vollast fahren.

    Viele Grüße
    Marcus

    Noch eine kleine Abhandlung, ... diesmal zum Thema Hyperthreading und seine Auswirkungen auf den Flusi.

    Ich gehe mal davon aus, das die meisten im Grundsatz wissen, dass Hyperthreading (HT) dafür da ist, die Leistung eines Prozessors zu optimieren und Mehrleistung zu erzeugen, indem ein CPU-Kern, sozusagen zweigeteilt wird und damit gleichzeitig zwei Rechenprozesse (Threads) ausführen kann.

    Warum ist HT nun im Fall der Flusis nachteilig?
    Schließlich ist es ja dafür gedacht, Mehrleistung zu erbringen.

    Der Haken ist, dass die unterschiedlichen Threads im Kern zwar eigenständig gehändelt werden können, aber sie nutzen dennoch die gleichen Ressourcen.
    Das heißt Eingabe und Ausgabe von Daten müssen über die selben physikalischen Komponenten in diesem CPU-Kern laufen.
    Solange einzelne Berechnungen für sich gefahren werden, ist HT von Vorteil, wird es aber sehr Ein- und Ausgabelastig, sind genau diese gemeinsam genutzten Ressourcen das Nadelöhr und es passiert das Gegenteil dessen, was man gerne erreichen wollte.

    Und wie nicht anders zu erwarten, besteht der größte Teil einer Flugsimulation in genau diesen Rechenprozessen.
    Es ist ein ständiger Datenfluss, ständig werden Parameter eingegeben und müssen umgerechnet und so schnell wie möglich wieder ausgegeben werden und das sehr massiv.

    Daher ist HT für Flusi's nicht sinnvoll.

    Wenn der Rechner auch für andere Aufgaben verwendet wird, die von HT profitieren, kann es auch sinnvoll sein, das HT im BIOS aktiviert zu lassen und entweder über die Affinitymask die Kerne so einzustellen, dass pro Kern nur ein Thread aktiv ist oder, was auch eine Möglichkeit ist, dem FSX über den Taskmanager nach dem Start gesagt wird, welche Kerne er benutzen darf (Taskmanager mit Ctrl.-Shift-Esc aufrufen, -> Prozesse->FSX-Prozess markieren, rechte Maustaste ->Zugehörigkeit festlegen).
    Allerdings muss man das dann jedesmal machen, für Gelegenheitsnutzer vielleicht eine Möglichkeit, ansonsten geht das auch über die Affinity Mask.

    Wenn allerdings ansonsten keine Programme auf dem Rechner laufen, die von HT profitieren, würde ich es auch im Bios abschalten.

    Wer aber z.B. einen 4-Kerner hat und im Bios das HT eingeschaltet hat und das auch aus guten Gründen so lassen möchte (und dafür gibt es gute Gründe), dem empfehle ich die Einstellung:
    84, was bedeutet, dass der erste physikalische Kern komplett rausgenommen ist (so wie auch bei 14 mit einem 4-Kerner ohne HT) und alle anderen Kerne nur einen Thread verwenden.
    Das sieht dann so aus(vlnr CPU 0-7): 00 10 10 10 .
    Wobei das Wort sich errechnet aus der gespiegelten Eingabe des Wertes, also 0101 0100.

    Soll der erste Kern ebenfalls mit einbezogen werden (was üblicherweise nicht der Fall ist), dann lautet das der Wert 85.
    Was sich aus folgendem Wort ergibt: 10 10 10 10 = wieder gepiegelt: 0101 0101.
    Wie gesagt, das ist nicht ratsam, da das BS und andere Tasks auf dem ersten Kern laufen und auch wenn der in der Systemauslastung aussieht, als würde er nur vor sich hindümpeln, macht es Sinn, den nicht für FS-Aufgaben einzusetzen.

    Also:
    AffinitMask=84 bei einem 4-Kerner mit im Bios eingeschaltetem HT, damit pro Kern nur ein Thread verwendet wird und der erste physikalische Kern (CPU 0 und 1) nicht verwendet werden.
    (Empfohlen)

    AffinitMask=85 bei einem 4-Kerner mit im Bios eingeschaltetem HT, wenn alle Kerne verwendet werden sollen, aber nur jeweils ein Thread pro Kern.
    (nicht empfohlen)

    Und btw:
    Die AffinityMask ist ein 8-Bit Wort, kann also maximal bis 255 gehen.
    (zumindest ist das laut Angabe von Lockheed Martin zu Prepar3d so und ich gehe daher davon aus, dass dies auch im FSX nicht anders ist, alles andere würde mich jedenfalls gewaltig wundern)

    Auch hier wieder zum Abschluss die ausdrückliche Bitte, mich zu korrigieren, wenn ich daneben gehauen habe.
    Vieles ist vereinfacht beschrieben, aber es sollte dennoch passen.
    Ich freue mich also immer über Fragen und Korrekturen.


    Viele Grüße
    Marcus

    Ok, ... dann trau ich mich mal und poste hier das ein oder andere von meinem Geschreibsel.
    Den Anfang macht der Nvidia Inspector und Vorsicht, ... das ist wirklich keine Kurzfassung ... aber ich wüsste auch nicht, was ich weglassen könnte :whistling::rolleyes:^^
    Los gehts:


    Da es doch immer wieder zu Missverständnissen darüber kommt, was der Nividia Inspector (NI) ist und was er macht und auch, was er nicht ist und nicht macht, kommt hier eine "kleine" Erläuterung/ Anleitung zu diesem hilfreichen Tool.

    Es geht hier nicht darum, welche Werte eingestellt werden sollen, sondern darum, mit was man es eigentlich überhaupt zu tun hat.

    Also gut .... was ist der Nvidia Inspector?

    Der NI ist nichts anderes als eine grafische Benutzeroberfläche, mit der ein Profil editiert werden kann.
    Im Grunde genommen macht und ist er damit genau das Gleiche, wie das Nvidia Control Center.

    Beide sind lediglich GUI's (Graphical User Interfaces= grafische Benutzeroberflächen)

    Die hängen weder tief im System, noch schreiben sie irgendwelche Inputs tief in das System.

    Beide sind sie nichts anderes, als Editoren, nur eben spezialisiert darauf, die Grafikprofile zu ändern.

    Wenn der NI gelöscht wird, bleibt da nix im System und nichts im Speicher, da bleibt gar nichts, außer dem geänderten Profil.
    Gleiches git, wenn die Anwendung zwar auf dem Rechner liegt, aber einfach nur nicht geöffnet ist.

    Wo ist der Haken?
    Der Haken ist, dass der Anwender über den NI einige Werte mehr einstellen kann, als Nvidia es über seinen Control Center (CC) erlaubt.

    Stell Dir vor, Du schreibst auf Deinem Rechner eine Textdatei, ... nur reiner Text.
    Dazu verwendest Du z.B. Word.
    Du schreibst und anschließend speicherst Du dann Deinen Text.
    Dieser liegt nun auf Deiner Festplatte als, na sagen wir "Brief.txt".
    Nachdem Du gespeichert hast, könntest Du natürlich noch einige Änderungen vornehmen, aber damit sie in die bereits gespeicherte Datei übergehen, muss erneut gespeichert, also überschrieben werden, denn zunächst hat man nur den Text im Arbeitsspeicher , also ein Abbild geändert, aber noch nichts gespeichert.
    Das ist soweit, denke ich, logisch und jedem klar.

    Am nächsten Tag nun möchtest Du gerne etwas an Deinem Brief ergänzen, aber diesmal nimmst Du nicht Word, sondern der Einfachheit halber den Standard Text-Editor.
    Wieder öffnest Du die Brief.txt, hast den Text auf dem Schirm, ergänzt den Text um einen Satz, und um die Änderung zu übernehmen, speicherst Du den Text, was bedeutet, dass er erneut überschrieben wird.

    Die auf der Platte liegende Datei wird durch die jetzt neu geschriebene ersetzt.
    Selbstverständlich ist damit auch der bereits geschriebene Text erhalten, plus der Satz, den Du ergänzt hast.

    Nun kommt der nächste Tag und Dir fällt ein, dass da noch ein weiterer Satz rein sollte.
    Also öffnest Du wieder die Brief.txt, heut mal wieder mit Word.
    Du findest dort sowohl den Text, den Du vorgestern ursprünglich mit Word geschrieben hast, als auch die Änderung, die Du gestern mit dem Editor gemacht hast, denn die Datei wurde ja abgespeichert.
    Also schreibst Du einen weiteren Satz und speicherst, ... logisch, denn solange nicht gespeichert ist, wird die Datei nicht geändert.

    Du hast also mit zwei Programmen, ein und dieselbe Datei geändert.

    Nichts anderes machst Du auch, wenn Du Profile sowohl im CC als auch im NI editierst.

    Das Profil ist im übertragenen Sinne die Textdatei und der NI und das CC sind Word und Editor, also die Textverarbeitungsprogramme.

    Der Unterschied ist, dass Du in Word einige Optionen mehr zur Verfügung hast, die der Editor nicht kennt.
    Man könnte sagen, dass in Deiner Textdatei einige Passagen sind, die Du zwar in Word sehen und ändern kannst, nicht aber im einfacher gestrickten Editor.
    Aber sie sind dennoch vorhanden, Du siehst sie halt mit dem einfachen Editor nicht.

    Deiner Textdatei aber ist es egal, mit welchem Editor sie bearbeitet wurde und es ist ihr auch egal, ob der eine Editor nun deinstalliert wurde, denn das ändert nichts an ihrem Inhalt.
    Wenn Du Word vom Rechner entfernst, bleiben ja üblicherweise die damit geschriebenen Dateien trotzdem erhalten.

    Blöd nur, wenn Word runter vom Rechner ist und Du an Deiner Textdatei Änderungen an den Stellen vornehmen möchtest, an die Du mit dem verbleibenden Editor nicht rankommst, weil Du sie damit nicht sehen kannst ;).

    Genau so ist es mit dem NI und dem CC.
    Der Ni ist das gleiche wie der CC: eine Oberfläche, aber er kann eben auch Werte ändern, die der CC einfach gar nicht sieht.
    Nvidia hat es wohl nicht für notwendig erachtet, diese Einstellungsmöglichkeiten an den Anwender weiter zu geben oder wollte ihn vor sich selbst schützen ;).

    Entgegen einer häufigen Annahme in bezug auf die Hierarchie von NI und CC, besteht der NI auf keiner "Hauptrolle".
    Es ist nicht so, dass da im Hintergrund zwei tools um die "Vorherrschaft" kämpfen.
    Der Inspector ist einfach nur eine Alternative zum CC.
    Wenn das Prgramm geschlossen ist, macht es nichts; nichts davon ist im Hintergrund aktiv.
    Es ist, als wäre der NI gar nicht da.
    Er ändert nur ein Profil und dieses Profil wird gespeichert und in den Treiber geladen, das ist alles.

    Ein Problem gibt es nur dann, und davon liest man immer wieder mal, wenn beide Editoren gleichzeitg geöffnet sind und Du gleichzeitig in beiden Editoren Änderungen vornimmst.
    Kann man machen (warum allerdings auch immer), aber es gibt dabei auch einiges zu beachten.

    Um selber mal zu sehen, dass beide Editoren einfach nur ein Profil ändern, rufe einfach mal den NI auf, ändere eine Einstellung (möglichst eine, die es auch im CC gibt ;) ), klick dann auf "apply changes" und schließe nun den NI (muss man nicht, empfehle ich aber).
    Jetzt öffne den CC.
    Dort wirst Du jetzt die geänderte Einstellung finden.
    Jetzt nimmst Du hier eine andere Einstellung und änderst diese ebenfalls.
    Bestätigst das ebenfalls, klickst auf "übernehmen", schließt den CC und öffnest nun wieder den Ni und rufst das entsprechende Profil auf.
    Du wirst sehen, dass sowohl die erste, mit dem NI gemachte Änderung vorhanden ist, als auch die zweite mit dem CC.

    Genauso, wie beim Schreiben und ändern der besagten Textdatei.

    Was passiert nun, wenn beide Programme gleichzeitig geöffnet sind und parallel in beiden Programmen Änderungen vorgenommen werden?
    Dann gibts Matsch.

    Es ist, als würde man auch gleichzeitig Word und den Editor geöffnet haben und beide haben die Brief.txt geladen.
    Wenn ich in Word eine Änderung mache und diese dann abspeichere, dann überschreibe ich die Datei.
    Aber das weiß der Editor ja nicht, der hat ja nur das Abbild der Datei im Speicher und das hat sich nicht geändert.
    Also ändere ich hier auch, speichere und überschreibe abermals die Datei, und lösche damit die Änderungen, die ich vorher mit Word gemacht habe, denn sie werden einfach überschrieben.
    Das kann ich nur verhindern, wenn ich die Datei im Editor neu lade, nachdem ich sie mit Word geändert und abgespeichert habe.

    Das ist kein "On the Fly-" oder "Realtime- Editing", was die Editoren da machen, ... die machen nichts anderes, als besagtes Textbearbeitungsbeispiel.

    Eine Änderung muss zunächst mal übernommen werden und dann sollte das geänderte Profil auch im anderen Programm geladen werden, sonst werden diese Änderungen überschrieben, sobald ich hier speichere.
    Eigentlich vollkommen logisch oder?

    Es macht also wenig Sinn, beide Editoren gleichzeitig offen zu haben und damit dassselbe Profil zu editieren.
    Es sei denn, man sich darüber im Klaren, was man und wie macht und folgt der Logik des Rechners.

    Was passiert nun, wenn man nach den vorgenommenen Änderungen auf "apply changes" klickt?
    Das Schicken der Konfiguration an den Treiber ist auch gleichzeitig das Überschreiben der Einstellungen.
    Mit "Änderung übernehmen" wird das neue Profil in den Treiber geladen UND in der Datei, in der die Treibereinstellungen abgelegt sind, gespeichert.
    Vorige Einstellungen werden bei diesem Vorgang IMMER überschrieben.

    Wie ist es nun mit dem Speichern eines Profils ... das wird doch mit "apply changes" auch gespeichert oder?

    "Jain" ;)
    Wenn ich auf "apply changes" klicke oder auf "Änderungen übernehmen" im CC, dann wird es natürlich gespeichert, aber eben in der Standarddatei, in der alle Einstellungen für Treiberwerte gespeichert sind.
    Wenn ich eine Sicherung meines erstellten und auch des Default-Profils haben will, dann muss ich dieses exportieren

    Bedenke immer: Das Progamm, egal welches, macht exakt das, was man ihm sagt.

    "Änderungen übernehmen" bedeutet in jedem Fall, dass das vorhandene Profil überschrieben wird.
    Auch das Default-Profil (und damit ist nicht das Basisprofil für alle Anwendungen gemeint, sondern das Profil, welches gerade editiert wird, aber die dazugehörenden Grundeinstellungen sind ab dem Moment futsch.

    Zunächst mal lege ich also grundsätzlich von jedem Profil, das ich ändere, eine Sicherheitskopie an.
    Wenn ich im NI "export current profile only" anwähle, dann bekomme ich dort die Möglichkeit, einen Dateinamen und einen Speicherort anzugeben und diese Möglichkeit rate ich unbedingt auch zu nutzen, denn sonst passiert genau das, was unter den Textprogrammen passiert:
    Es wird immer ein und dieselbe Datei geschrieben, bzw, ja überschrieben und das wollen wir nicht.

    Also speichere Dein Defaultprofil entweder unter dem vorgegebenen Dateinamen ab oder erweitere den Dateinamen um einen Zusatz.
    Ih nehme dafür z.B.: "default"
    Die abgespeicherte Datei sieht dann so aus:
    FSX_Einstellungen_default.nip

    Jetzt nehme ich Änderungen an dem Profil vor, übernehme diese mit "apply changes" und will nun auch diese als externe Backup-Datei exportieren.
    Also gehe ich wieder auf "export current profile only" und wähle jetzt aber einen anderen Dateinamen!!
    Ich mache es üblicherweise so, dass ich dem Dateinamen das aktuelle Datum und eine fortlaufende Nummer anhänge, was wiederum dann z.B. so aussieht:
    FSX_Einstellungen_21_02_13_01.nip

    Mache ich am gleichen Tag noch weitere Änderungen, dann wird die laufende Nummer hochgezählt, also 02, 03, 04 und so weiter.
    Auf diese Weise habe ich sämtliche Änderungen jederzeit verfügbar und kann sie in ihrer zeitlichen Abfolge sortieren und aufrufen.
    Als Speicherort wähle ich übrigens üblicherweise ein externes Backuplaufwerk, das kann auch ein Speicherstick o.ä. sein.
    Selbst wenn ich mal das System neu aufsetze, kann ich jederzeit diese Profile wieder laden.

    Bedenke, dass immer nur ein Profil pro Anwendung geladen sein kann.

    Das ist alles im Grunde genommen nicht allzu kompliziert, aber es erfordert zugegebenermaßen ein wenig "technisches Einfühlungsvermögen", bzw. technisches Verständnis, denn man muss der Logik des Rechners folgen und daher wissen, was da und wie passiert.
    Der Vergleich mit den Texteditoren ist da vielleicht eine gute Hlfe.

    Tatsächlich sind übrigens diese exportierten Profile reine Textdateien, kann man öffnen und anschauen.
    Den Vergleich habe ich also nicht ganz ohne Grund gewählt. :)

    Und immer darauf achten, dass Du Dein editiertes Profil erst exportierst, nachdem Du auf "apply changes" geklickt hast, sonst wird das Profil exportiert, das sich in der Hauptdatei befindet, welches ja noch aktiv ist und nicht Dein Neues ;).

    Entgegen der häufig vertretenen Meinung werden also nicht im Hintergund irgendwelche Inputs zum Treiber geschickt ... mit einer Ausnahme:
    Mit "apply changes" wird das Profil abgespeichert und in den Treiber geladen.
    Das ist ein Vorgang!

    Der NI schreibt in die selbe Datei, wie das CC.
    Wo diese Datei liegt, werde ich aber verschweigen, denn das ist eine zentrale Datei, in der noch einiges mehr steht ;).

    Sowohl der NI als auch das CC können Backup-Dateien dieser Profile erstellen, die auch wieder aufgerufen werden können.

    Der Treiber lädt seine Einstellungen aus der entsprechenden "Hauptdatei" und wer oder was die ändert ist dem völlig wurscht.
    Wenn allerdings gleichzeitig mit zwei Editoren auf eine Datei zugegriffen wird, dann gewinnt immer der, der als letztes "übernehmen" geklickt hat.
    In dem Moment werden die Einstellungen sofort in den Treiber übernommen und die "allgemeine Treiberdatei", in der sich sozusagen alle Einstellungen befinden.

    Das ist immer ein Vorgang und das muss man trennen vom Exportieren einzelner Profile.

    Was passiert, wenn der Computer startet, welches Programm hat dann die "Oberhand", der NI oder das CC?
    Gar keins ...
    Wenn der Computer startet, wird erstmal das Basisprofil geladen.
    Das ist eine simple Textdatei, die alle Parameter enthält, die die GraKa braucht.
    Weder der NI noch das CC sind da in irgendeiner Weise aktiv.
    Wobei ich denke, dass das schon klar geworden ist, aber ich wollts noch mal deutlich hervorheben.
    Wenn dann eine Anwendung gestartet wird, schaut der Treiber nach, ob ed dazu ein Profil gibt und wenn, wird dieses Profil geladen und das ist da jeweils zuletzt gespeicherte Profil, also jenes, welcher über "Änderungen übernehmen" aktiviert wurde.

    Und immer schön drauf achten, dass man auch das richtige Profil ändert und nicht mal auf dem allgemenen Grundprofil und mal auf dem FSX-Profil rumdoktort.. das kann sonst sehr lustig werden :D

    Bleibt (hoffentlich nur) noch eine Frage:
    Was macht die eigentliche Software, also in unserem Fall der FSX, mit dem Profil?
    Die Antwort dazu:
    Gar nichts!!

    Das Profil, wird von der Software, also dem FSX, nicht angetastet.

    Wohl aber die aktuellen Einstellungen, gesetzt den Fall, dass es der Software erlaubt ist ;).

    Im Profil gibt es ja oft die Einstellung: "application controlled"
    Das sagt dem Treiber: "Egal was da in dem Profil steht, wenn die Software einen Wert haben will, dann übernehme ich den, und zwar sofort und ohne zu zögern und ohne zu meckern".

    Dann wäre da noch die Einstellung "Override any application setting"
    Das heißt, vor dem Treibereingang steht ein Türsteher und sagt jedem vom FSX kommenden Befehl: "Ey, ... Du kommst hier net rein!"

    Und als drittes käme dann "enhance the application setting", was nichts anderes bedeutet als, dass eine Einstellung, welche die Software nicht oder noch nicht kennt, zusätzlich angenommen und ausgeführt wird.
    Es ermöglicht also, neu entwickelte Parameter zu nutzen.

    Und dann gibt es hier und da noch Werte wie "treat "override any application setting" as "application controlled".
    Wenn dann eine Wertänderung vom FSX kommt, wird der Treiber zurückmelden und sagen "Jawoll, danke für die Info, wird sofort gemacht, ist ausgeführt!", ... während das Treiberchen in Wirklichkeit vor der Tür sitzt und grinst und denkt " :hehe: Wenn Du wüsstest ... :D " .

    Der Grund dafür ist recht einfach, denn es gibt Programme, die nach einer Wertänderung auch püfen, ob das erfolgt ist und mit Meckermeldungen um sich schmeißen, wenn sie sehen, dass das nicht passiert ist.

    Aber alle diese Wertänderungen und Einstellungen, die vom FSX kommen, sind temporär, bleiben also nicht erhalten und verändern nicht das Profil.
    Solange vom FSX keine anderen Anforderungen kommen, wird die genommen, die im Profil steht, ... hat der FSX aber das Bedürfnis etwas zu ändern, dann wird das u.U. erlaubt, ist aber nicht dauerhaft.

    Also, Kurzfassung:
    * Cc und NI sind nur Editoren, der NI kann etwas mehr sehen, als das CC.
    * Speichern und übernehmen bedeutet, dass Änderungen in den Treiber geladen und die "Sammeldatei" geschrieben werden.
    * Es wird immer das ganze Profil gespeichert, also überschrieben.
    * Exportieren immer mit eigenen Dateinamen, sonst läuft man Gefahr, dass ein vorhandener Dateiname verwendet wird und damit werden alte Sicherungen überschrieben.

    So, .. ich hoffe, ich konnte ein paar Klarheiten beseitigen und es war nicht allzuviel Text und ich hab mich jetzt nicht verhaspelt ...
    Da ich das Wissen nicht gepachtet habe, freue ich mich über jede Korrektur und Fragen :)

    Viele Grüße und viel Erfolg beim "profilieren" ^^

    Marcus