Jammer-Thread

Hier kann über allgemeine Themen diskutiert werden, die sonst in kein Forum passen.
Insbesondere über Szene, Games, Kultur, Weltgeschehen, Persönliches, Recht, Hard- und Software.
Benutzeravatar
Aramis
Moderator
Beiträge: 1458
Registriert: 25.02.2009, 19:50
Echter Name: Alexander Gessler
Wohnort: 2016
Kontaktdaten:

Re: Jammer-Thread

Beitrag von Aramis »

Wenn das Zeug wirklich so viel Garbage macht, kannst du dann nicht eine normale for-Schleife o.Ä. nehmen?
Nein, weil Hashsets und Dictionaries keine andere Iterationsmoeglichkeit bereitstellen. Problem erfolgreich geloest durch Wiederverwendung des Iteratorobjekts - ist definitiv nicht threadsicher und auch nicht wirklich spezifikationskonform, muss es hier grade aber auch nicht sein.

Naechste Variante waere dann ein eigener Woerterbuchtyp, der eine effizientere Iterationsmoeglichkeit zur Verfuegung stellt.
Wenn Probleme dieser Art auftreten, sollte man sich immer fragen, ob es auch anders geht und ob die gewählte Sprache das beste Mittel ist, das Ziel zu erreichen
Jo, das sehe ich genauso. Im konkreten Fall kommt die Erkenntnis zu spaet, aber wenigstens hab ich wieder was neues gelernt :-)
Benutzeravatar
Chromanoid
Moderator
Beiträge: 4272
Registriert: 16.10.2002, 19:39
Echter Name: Christian Kulenkampff
Wohnort: Lüneburg

Re: Jammer-Thread

Beitrag von Chromanoid »

Worum geht's bei der Anwendung, wenn man fragen darf? Das müssen ja extreme Map-Wühlereien sein, dass da soviel Müll anfällt.
Benutzeravatar
Krishty
Establishment
Beiträge: 8305
Registriert: 26.02.2009, 11:18
Benutzertext: state is the enemy
Kontaktdaten:

Re: Jammer-Thread

Beitrag von Krishty »

Als ich gerade versehentlich via SyncToy meinen Arbeitsstand mit dem von letzter Woche überschrieben habe, sind Kompilierfehler aufgetreten (sonst hätte ich es wahrscheinlich garnicht erst bemerkt). Das bedeutet, dass irgendwo was zu viel oder zu wenig kopiert wurde.

Was ist daran so schwer, alte Dateien mit neuen zu überschreiben?! Warum kriegt dieses Mistding das einfach nicht hin?!
seziert Ace Combat, Driver, und S.T.A.L.K.E.R.   —   rendert Sterne
Benutzeravatar
Krishty
Establishment
Beiträge: 8305
Registriert: 26.02.2009, 11:18
Benutzertext: state is the enemy
Kontaktdaten:

Re: Jammer-Thread

Beitrag von Krishty »

Meine Anwendung (Konsolenanwendung mit aktivem, fokusgefüttertem Fenster im Vordergrund) bekommt manchmal einfach keine F12-Tastendruck-Nachricht. Wtf?!

Ich verstehe ja, dass das beim Debugging der Halteknopf ist … aber das ist ein Release-Build, den ich aus dem Explorer starte! Wtf is dis shit


War auskommentiert :roll: Ein Mal zu viel gejammert …
seziert Ace Combat, Driver, und S.T.A.L.K.E.R.   —   rendert Sterne
Benutzeravatar
eXile
Establishment
Beiträge: 1136
Registriert: 28.02.2009, 13:27

Re: Jammer-Thread

Beitrag von eXile »

Krishty hatte doch mal eine handliche Übersicht (als Bild) gepostet, in dem er beschrieben hat, wann ein Parameter ein Pointer / eine Referenz / etc. sein sollte. Ich finde Sie nicht mehr. Ich frage, weil ich gerade einmal zu vorschnell hier auf Shift+Entf. gedrückt habe. :(

Nachtrag: Gefunden! Nochmals* danke dafür.

(Wobei einem bekanntlich noch frei steht, per Value zu übergeben.)

(* Mir fällt gerade auf, dass ich mich noch gar nicht bedankt habe. Dies hole ich hiermit nach. ;))
Helmut
Establishment
Beiträge: 237
Registriert: 11.07.2002, 15:49
Wohnort: Bonn
Kontaktdaten:

Re: Jammer-Thread

Beitrag von Helmut »

Krishty hat geschrieben:Ich erinnere mich an einen Old New Thing-Artikel, wo erklärt wurde, dass sie extra für Iteratoren yield return eingeführt haben. Das ist eine return-Anweisung, die die Funktion nicht nur abbricht, sondern dabei ihren internen Zustand speichert und später wiederherstellt.

Da stand für mich fest, das niemals benutzen zu wollen. To today I can't even …
Also C# kann man nun einiges vorwerfen, aber das Iteratorkonzept ist doch wirklich genial. Damit lassen sich die komplexesten Aufzählungen einfach und wirklich effizient kapseln. Das Iteratorsystem von C++ ist im Vergleich ein absoluter Jammerhaufen. Versuch mal damit sowas wie FindFirstFile/FindNextFile (mit Unterordnern) zu kapseln. Ohne 2 Hilfsklassen und manuell angelegtem Stack (mangels Rekursion) unmöglich. Ich wünschte C++ hätte so ein Iteratorsystem...
yield return ist übrigens in gewisser Art auch nur Syntax suger, man kommt auch ohne aus.
Ubseht
Beiträge: 6
Registriert: 01.06.2012, 17:59

Re: Jammer-Thread

Beitrag von Ubseht »

CodingCat hat geschrieben:
Ubseht hat geschrieben:
CodingCat hat geschrieben:
Aramis hat geschrieben:Um die Auswirkungen zu entspannen haben wir hier eben begonnen, unsere Datenstrukturen zu ent-OOisieren, sprich dafuer geeignete Objekte auf rohe Datenarrays aufzusplitten (damit M&S schneller laeuft).
Jep, genau das macht mich immer noch sprachlos. Auch in Java hieß für uns Optimierung damals zurück auf eine Sprachebene, die noch klar unter C anzusiedeln ist.
Bitte gibt uns doch eine Erläuterung dieser Sprachebene und welche Optimierungen ihr dadurch denn angeblich erzielt haben mögt.
Das Fehlen von Value Types zwang uns dazu, alle Daten in Form von Arrays primitiver Datentypen abzulegen. Aus Arrays von Objekten wurden somit viele Arrays von Objektattributen. Selbst in C kann ich Objekte in Form von structs in Arrays packen, ohne damit das Vielfache an Speicher zu verschwenden.
Ja Value Types gibt es nicht. Insofern stimmt deine Aussage bezüglich der primitiven Sprachebene um Speicher zu sparen. Dachte ihr hättet irgendwas wilderes gemacht. Anstelle von Arrays solltet ihr übrigens lieber nio-Buffer verwenden. Diese haben folgende Vorteile:
  • - Ihr Speicher kann mittels "allocateDirect" angelegt werden. Die JVM versucht dann den Zugriff zu optimieren. Z.B. kann die JVM unter umständen den Speicher außerhalb des GC-Heaps anlegen.
    - Die ByteBuffer-Implementierung kommt auch mit anderen primitiven Typen außer byte zurecht (also floats, doubles, chars, ints, longs, shorts). Die Typen lassen sich mischen -> Man kann mittels einer Fassade structs nachbilden.
    - Auf nio-Buffer lässt sich leicht mittels jni zugreifen. Siehe: http://docs.oracle.com/javase/7/docs/te ... er_address
    - Frameworks wie http://www.lwjgl.org/ (Unter anderem OpenGL Zugriff für Java) verwenden nio-Buffers. Die Buffer Daten lassen sich also relativ einfach visualisieren.
Da obendrein Generics für primitive Datentypen nicht unterstützt werden, mussten wir uns zusätzlich noch eigene (Hash- und Queue-)Container-Klassen schreiben, die wir dann zu allem Überfluss für verschiedene primitive Typen per Copy'n'Paste vervielfältigen durften.
Recht bekannt in der Java Community ist das Trove-Projekt. Dieses enhält Container-Implementierungen für Primitivtypen.
Projekt: http://trove.starlight-systems.com/home
JavaDoc: http://trove4j.sourceforge.net/javadocs/
Falls ihr wieder ähnliche Container braucht, könnt ihr ja evaluieren, ob die Trove-Versionen euren Ansprüchen genügen. Neben Trove gibt es übrigens auch weitere ähnliche Implementierungen. Falls eure Container besser sein sollten, könnt ihr ja überlegen, Java dadurch zu verbessern, dass ihr eure veröffentlicht (z.B. GitHub).

BTW habt ihr Java also doch auch in einer Sprachebene oberhalb Cs verwendet. ;)
Davon abgesehen ist auch bei uns ein Vorberechnungsalgorithmus auf einem 48-Core-Rechner über 16 Stunden hinweg alle paar Sekunden auf 0% Auslastung gefallen. Woran das lag, konnten wir allerdings Aufgrund des stark eingeschränkten Zugangs zu diesem Rechner nicht weiter analysieren. Mein Tipp wäre auch hier der GC, da die Berechnungen davon abgesehen kaum Synchronisationspunkte enthielten.
In der Sun-Implementierung der JVM (HotSpot) gibt es einen Parallel-GC. Bei diesem sollte die Auslastung dann nicht bei 0 liegen. Falls ihr das einmal testen möchtet, kannst du mich gerne noch nach Details dazu fragen.
Aramis hat geschrieben:
GC in Java und .net ist zwar nicht das, was du gerne hättest, aber tolerabel?
Ja, so koennte man es formulieren :-)
Gut, das ist eine legitime Meinung und ich muss keine Missionierungsversuche unternehmen.
Sofern es im .net Compact Framework etwas dem StringBuilder oder StringBuffer aus Java ähneldem gibt, wäre dies eine Möglichkeit diese Problem sauber und sprachgerecht zu lösen.
Gibt es natuerlich - aber ist voellig nutzlos weil StringBuilder.ToString() eben doch ein neues Objekt erstellt :-) Genau das ist der Punkt: sobald der GC das Bottleneck wird, findet man sich ploetzlich im tiefsten Mittelalter wieder die meisten, an sich gut durchdachten, Sprachmittel und grosse Teile der Standardbibliotheken ploetzlich auf der Blacklist stehen.
Naja völlig nutzlos ist es eben deshalb nicht, weil nicht pro Stringoperation ein neuer String erstellt wird, sondern erst am Ende. Je nach dem was ihr macht, können das also massive Einsparungen sein.
Jedoch sind zumindest in normalen Java temporäre Objekte einer der Vorteile von GC. Der GC muss schließlich solche Objekte nicht kopieren und hat daher mit Solchen nur wenig arbeit.
Ich hab erhebliche Zweifel dass ein Mark&Sweep GC die Dekonstruktion vieler temporaerer, hochlokaler Objekte schneller hinkriegt als eine deterministische Speicherverwaltung, die einfach am Ende des Scopes den Speicher freigibt. In beiden Faellen muessen wenige, kleine und vermutlich hintereinanderliegende Speicherbloecke schnell zugewiesen und am Ende wieder freigeben werden - nur dass der GC noch zusaetzlichen Verwaltungsaufwand hat. Ein GC hat hoechstens einen etwas besseren globalen Ueberblick – wobei den auch eine deterministische Heap-Implementierung haben kann (LFH o.ae.).
Es ging mir nicht darum, dass der GC schneller als eine manuell angepasste Speicherverwaltung ist, sondern, dass die Beseitigung von temporären Objekten, das ist was der GC besonders gut kann. Objekte die lange, aber nicht bis zum Ende des Programmes leben, sind das Gegenstück (machen dem GC Probleme).
Die modernen Java-GCs arbeitet übrigens anders. Sie geben nichts frei, sondern vewenden den selben Speicher neu. Arbeit gibt es daher nur mit noch lebenden Objekten, da diese kopiert werden müssen. Dieses Verhalten ließe sich natürlich auch manuell in C/C++ nachbilden.
Benutzeravatar
Lynxeye
Establishment
Beiträge: 145
Registriert: 27.02.2009, 16:50
Echter Name: Lucas
Wohnort: Hildesheim
Kontaktdaten:

Re: Jammer-Thread

Beitrag von Lynxeye »

Die Freizeit von drei Tagen ist jetzt bei der Suche nach einem Bug im startup Code eines Bootloaders draufgegangen. Der BL crashte noch vor Initialisierung des UARTS und auf dem Board ist kein JTAG vorhanden, somit keine Ausgabe und kein Hardwaredebugging möglich.

Und woran lags? An einem verdammten Bit, welches den Prozessor bei unaligned Zugriffen trapt, obwohl er Hardwaremäßig problemlos dazu in der Lage ist.
ARMv7 Architecture Manual hat geschrieben: To enable unaligned support, you must:

Clear the A bit, bit 1, of CP15 register 1 in your initialization code.
Benutzeravatar
eXile
Establishment
Beiträge: 1136
Registriert: 28.02.2009, 13:27

Re: Jammer-Thread

Beitrag von eXile »

Das VC-Entwicklungsteam hat dann mal drei Monate Entwicklungszeit investiert, um die Installationszeit um 8 Minuten zu verkürzen.
Benutzeravatar
CodingCat
Establishment
Beiträge: 1857
Registriert: 02.03.2009, 21:25
Wohnort: Student @ KIT
Kontaktdaten:

Re: Jammer-Thread

Beitrag von CodingCat »

Sobald man DispatchIndirect anstatt Dispatch aufruft, kann man scheinbar mit NSight überhaupt nicht mehr nachsehen, was im Compute Shader vor sich geht. Das Graphics Introspector Window tut einfach so, als wäre der Aufruf ein Draw Call, graut das CS-Feld aus und zeigt stattdessen die Shader-Stufen der Graphik-Pipeline an. Ich glaube wirklich, ich bin der Erste, der die Dummheit begeht, damit was anderes als CUDA zu debuggen.

Randnotiz: Wie kommt es eigentlich, dass ZFX rund um die Uhr von einem Rudel Suchmaschinenbots überwacht wird? Haben die großen Suchanbieter solch einen Überschuss an CPU-Zeit oder ist ZFX der Nabel der Welt?
alphanew.net (last updated 2011-07-02) | auf Twitter | Source Code: breeze 2 | lean C++ library | D3D Effects Lite
Benutzeravatar
Aramis
Moderator
Beiträge: 1458
Registriert: 25.02.2009, 19:50
Echter Name: Alexander Gessler
Wohnort: 2016
Kontaktdaten:

Re: Jammer-Thread

Beitrag von Aramis »

Vermutung: phpbb ist nicht sonderlich schnell im Aktualisieren der Online-Liste. Ein Blitzbesuch eines Bots taucht also fuer ein ganzes Weilchen auf.
Benutzeravatar
Schrompf
Moderator
Beiträge: 4996
Registriert: 25.02.2009, 23:44
Benutzertext: Lernt nur selten dazu
Echter Name: Thomas
Wohnort: Dresden
Kontaktdaten:

Re: Jammer-Thread

Beitrag von Schrompf »

Irgendwas in der Reihe Kollege -> TortoiseSVN -> Flurserver -> Apache -> WebDAV -> Subversion verstirbt nach fünf Minuten Pause mit dem hilfreichen Hinweise "Could not get next bucket brigade". Anscheinend sind 200MB große Textfiles nicht für Subversion geeignet. Oder es ist ein Bug. Oder der Server ist überlastet und das Timeout terminiert die Verbindung, bevor Ergebnisse kommen.

Ich hab alles ausprobiert, was das Internet zu dem Thema weiß. Und nichts hilft. HASS. Ich kann doch jetzt nicht auf Verdacht neue Server-Hardware kaufen und zusammenbauen, nur um auszuschließen, dass es nicht am Timeout liegt.
Früher mal Dreamworlds. Früher mal Open Asset Import Library. Heutzutage nur noch so rumwursteln.
Benutzeravatar
dot
Establishment
Beiträge: 1743
Registriert: 06.03.2004, 18:10
Echter Name: Michael Kenzel
Kontaktdaten:

Re: Jammer-Thread

Beitrag von dot »

Schrompf hat geschrieben:Anscheinend sind 200MB große Textfiles nicht für Subversion geeignet.
Also ich hab schon 600MB große Textfiles in einem SVN Repo gehabt und hat alles problemlos funktioniert.
simbad
Establishment
Beiträge: 130
Registriert: 14.12.2011, 14:30

Re: Jammer-Thread

Beitrag von simbad »

Schau mal ins apache log.
Da müsste ja der Request drin stehen. Und wenn er abbricht auch mit einem eventuell besseren Fehler-Code. Vielleicht hilft die Summe der Infos.
Benutzeravatar
Schrompf
Moderator
Beiträge: 4996
Registriert: 25.02.2009, 23:44
Benutzertext: Lernt nur selten dazu
Echter Name: Thomas
Wohnort: Dresden
Kontaktdaten:

Re: Jammer-Thread

Beitrag von Schrompf »

Was ich aus den Logs hab, steht doch schon im Gejammer: 500 - Internal Server Error. Und error.log meint dazu
log hat geschrieben:[Wed Jun 06 09:39:55 2012] [error] [client xx.yy.zz.abc] Could not get next bucket brigade [500, #0]
Ich habe auch nach alldem schon gegoogelt. Es scheint eine Menge Gründe dafür zu geben, warum das passieren kann. Meine aktuelle Hypothese ist wie gesagt, dass der Server (ein kleiner EEEPc mit Intel Atom) mit der Filegröße überfordert ist und einfach irgendwelche internen Operationen nicht fertig bekommt, bevor Apache die Verbindung mit einem TimeOut terminiert. Das Anheben der TimeOuts hatte aber auch nix gebracht bisher... so ein Elend.
Früher mal Dreamworlds. Früher mal Open Asset Import Library. Heutzutage nur noch so rumwursteln.
simbad
Establishment
Beiträge: 130
Registriert: 14.12.2011, 14:30

Re: Jammer-Thread

Beitrag von simbad »

Na dann kennst du den hier bestimmt.

http://blog.benny-baumann.de/?p=985

Ansonten wäre es natürlich gut wenn du auch mitteilst was du schon versucht hast. 200MB ist schon mächtig. Aber sollte, bei unendlich viel Zeit irgendwann ankommen.
Benutzeravatar
Schrompf
Moderator
Beiträge: 4996
Registriert: 25.02.2009, 23:44
Benutzertext: Lernt nur selten dazu
Echter Name: Thomas
Wohnort: Dresden
Kontaktdaten:

Re: Jammer-Thread

Beitrag von Schrompf »

Du hast Recht - eigentlich wollte ich nur jammern, aber damit man mir helfen kann, muss ich etwas mehr verraten. Ich kenne den Link.

Also:
- es passiert gelegentlich, nicht erst seit gestern
- Es passiert immer nur mit großen Files, aber davon gibt es bei den Splitterwelten eine Menge
- Ich habe einen kleinen Binär->Text-Coder geschrieben, in dem während der Entwicklung alle Binärfiles der Splitterwelten geschrieben werden, damit das Drecks-Tool sich nicht runheraus weigert, kleinere Änderungen zu mergen. Ob das Sinn macht oder nicht, ist MEINE Entscheidung, nicht die des verdammten Tools. Wir reden hier also nur von Textdateien, aber recht großen.
- das Committen hat auch ohne Fehler immer heftige Pausen zwischendurch: alle Changes aufgelistet, dann "Sending Content" und da zwischendurch wahllos Aussetzer mit 0Byte/s für eine halbe Minute oder auch mal länger
- eine dieser Aussetzer überschreitet bei einem Teamkollegen gelegentlich die Länge von fünf Minuten
- und da bricht der Commit ab mit "500 - Internal Server Error"

Ich habe probiert:
- Anheben von LimitXMLRequestBody und LimitRequestBody auf >1GB
- Anheben der TimeOut-Grenzen - ebenso aus dem von Dir genannten Link
- svnadmin verify auf dem Repository - ein Link im Netz meinte, bei ihm würde das Phänomen fortschreitend andere Repositories infizieren
- Dateiinhalt geprüft - ein Link meinte, es läge an bestimmten Sonderzeichen im Textinhalt der Commit-Dateien - hier nur \n und A-Za-z0-9 und ein paar Satzzeichen
- Anheben des Gesamt-Timeouts von Apache, aktuell 500s - Resultat davon noch unbekannt, da mein Kollege weg musste
- Update der Server-SVN-Module auf die aktuelle Version 1.7.5, weil angeblich ein Bug irgendwo da drin steckte

noch aus steht:
- Update des Clients beim Kollegen, auch wegen des vermuteten Bugs im Subversion

Und eigentlich hab ich vieles anderes zu tun, als mich um Infrastruktur zu kümmern, die einfach mal zu funktionieren hat. Grrrrr.
Früher mal Dreamworlds. Früher mal Open Asset Import Library. Heutzutage nur noch so rumwursteln.
simbad
Establishment
Beiträge: 130
Registriert: 14.12.2011, 14:30

Re: Jammer-Thread

Beitrag von simbad »

Hast du eine Möglichkeit die Aktivitäten auf dem Server zu beobachten?
Subversion arbeitet immer synchron. Selbst auf meinem Rechenknecht, der im Stream-Mode 120MB/s übers Netz bringt, schafft Subversion nur 8MB/sec. Bei der größe kann es sein, das er das Zeug in Buffer schreibt, der Speicher ausgelastet ist und er gleich nochmal solange braucht. Gerade bei einem Atom wird das schnell eng.
Es wäre also mal spannend, ob da irgendwelche Prozesse viel Speicher verbrauchen und wie die Gesamtauslastung ist.

Ist das ein Linux-Maschinchen was da läuft? Wenn ja wäre mal spannend, was das für eine Distribution ist und was da für ein Kernel drauf läuft.
Benutzeravatar
Schrompf
Moderator
Beiträge: 4996
Registriert: 25.02.2009, 23:44
Benutzertext: Lernt nur selten dazu
Echter Name: Thomas
Wohnort: Dresden
Kontaktdaten:

Re: Jammer-Thread

Beitrag von Schrompf »

Windows XP :-) Ich interagiere per UltraVNC mit dem Knecht, das ist so eine Art "Live-Beobachtung", aber nur für niedrige Werte von "live".
Früher mal Dreamworlds. Früher mal Open Asset Import Library. Heutzutage nur noch so rumwursteln.
simbad
Establishment
Beiträge: 130
Registriert: 14.12.2011, 14:30

Re: Jammer-Thread

Beitrag von simbad »

Na dann müssen da die XP freaks ran, das bin ich definitiv nicht. Ich bin immer froh wenns nicht abschmiert.
Benutzeravatar
Schrompf
Moderator
Beiträge: 4996
Registriert: 25.02.2009, 23:44
Benutzertext: Lernt nur selten dazu
Echter Name: Thomas
Wohnort: Dresden
Kontaktdaten:

Re: Jammer-Thread

Beitrag von Schrompf »

Gleich mal weitergejammert: Der Versuch, die Apache-Subversion-Module auf dem Server zu aktualisieren, führte dazu, dass Apache gar nicht mehr startet - ohne Fehlermeldung. Ich vermute, die reinkopierten Modules sind gegen irgendwelche anderen Dependencies gebaut als der Rest von Apache in dieser Install. Dabei hatte ich auch alle Runtimes aktualisiert, die noch in Subversion/bin rumlagen. Grmpf.

Also dachte ich mir: das ist die Gelegenheit, gleich mal das komplette Redmine zu aktualisieren. Ich bin manchmal echt ein Trottel. Ruby On Rails-Projekt? Einfach so aktualisieren? Mitnichten! es sind jetzt drei Stunden vergangen, in denen ich gefühlte zweihundert kryptische Konsole-Fehlermeldungen gejagt habe, weil sich irgendwelche Pfade verschoben hatten, irgendwelche Drecks-Ruby-Gems in Version 2.7.5 nicht mehr kompatibel mit Rake irgendwas unter Ruby 1.7.5 mit Mongrel Filzschuh... die Zahlen sind frei erfunden, also bitte nicht beschweren, wenn hier tatsächlich jemand was mit diesem Bullshit anfangen kann. Nachdem ich jetzt noch die Datenbank gedropt, wieder eingesaugt, von Hand irgendwelche Tables entfernt, dann migriert und verifiziert habe, läuft zumindest die Projektverwaltung wieder. Dann noch "schnell" die EMail-Notifications wieder zum Laufen bringen - die Pfade und Dateinamen der Konfigdateien haben sich geändert, aber alle Wiki-Einträge und HowTos sind hoffnungslos veraltet - und die Projektverwaltung läuft wieder. Und jetzt noch Subversion in diese Apache-Install rüberkriegen. Und da hängen wir wieder an den nicht-kompatiblen Modules... Apache startet gar nicht mehr, dieses Mal aber zumindest mit einer Fehlermeldung, welches Module ihm nicht gefällt.

Ich mach das gern... lalala... ich liebe das.... dadidadum... Blümchen und Sonne... tschubidu...
Früher mal Dreamworlds. Früher mal Open Asset Import Library. Heutzutage nur noch so rumwursteln.
Benutzeravatar
eXile
Establishment
Beiträge: 1136
Registriert: 28.02.2009, 13:27

Re: Jammer-Thread

Beitrag von eXile »

  1. Diese D̢͍̘̰̂ͯ̍ͧ̊͒̍̀R̷͕̬̦̦̹͈̪̣̻̀͊̊E̫͋̂̀C̷̡̦͓ͭ͒́K̴̓ͮ҉̩͖̼̰̟̼͡S̈́̓̊ͭ́̄̓̎҉̫̟̟̮̖̹̜͘͡Ä̷͑͛ͥͥ҉̪̱̝C̐̆́̚҉̜̮ͅK̘̠̺ͪ͒̎ͯ̆͗͒̌ͨ̀̕E̦̮̣͉̘̦͍͎͌͒. Frickelfox hat aktualisiert. Frickelfox startet neu. Frickelfox stürzt ab, löscht alle aktiven Tabs, synchronisiert die Tab-Schließung über alle Firefox-Sync-Geräte, stürzt noch einmal ab, und startet dann mit leerem Bildschirm. Alle Tabs weg.
  2. Daher stelle ich hier gerade eine Adresse rein, nach der ich erst einmal wieder drei Stunden suchen musste; kein Wunder: Die Definition der Standard-Sample-Positionen ist auch an einer vollkommen unlogischen Stelle in der MSDN untergebracht.
  3. Habt ihr euch mal gedacht, nun ja, vielleicht ist Metro ja nicht so schlecht, da könnte man vielleicht doch mal eine Graphikanwendung oder Demo drauf portieren?

    Gut.

    Ihr müsst bloß auf so unwichtige Features wie Anti-Aliasing verzichten.
    http://msdn.microsoft.com/en-us/library/windows/desktop/hh404528 hat geschrieben:For a flip-model swap chain (that is, a swap chain that has the DXGI_SWAP_EFFECT_FLIP_SEQUENTIAL value set in the SwapEffect member), you must set the Format member to DXGI_FORMAT_R16G16B16A16_FLOAT, DXGI_FORMAT_B8G8R8A8_UNORM, or DXGI_FORMAT_R8G8B8A8_UNORM; you must set the Count member of the DXGI_SAMPLE_DESC structure that the SampleDesc member specifies to one and the Quality member of DXGI_SAMPLE_DESC to zero because multiple sample antialiasing (MSAA) is not supported; you must set the BufferCount member to from two to sixteen. For more info about flip-model swap chain, see DXGI Flip Model.
    http://msdn.microsoft.com/en-us/library/windows/desktop/bb173077 hat geschrieben:Note Metro style apps must use DXGI_SWAP_EFFECT_FLIP_SEQUENTIAL.
    Aber warum auch Anti-Aliasing; ich meine, wenn in Metro eh alles ein Gitter ist, sind die sichtbaren Treppenstufen eben auch nur kleine gefüllte Gitterpunkte. :|
  4. Daher aus gegebenem Anlass:
    BildThat's 66 % more grid per grid.
simbad
Establishment
Beiträge: 130
Registriert: 14.12.2011, 14:30

Re: Jammer-Thread

Beitrag von simbad »

Komm lass dich trösten.
Das ist einer der Gründe, warum ich immer versuche möglich schlanke Systeme zum Einsatz zu bringen. Subversion als tortoise unter windows.
Redmine garnicht, weil eine installation nur in Form von fertigen Paketen zu einer distribution geht und ich auf meinem Server eine Slackware benutze. Für die gibt es selten passendes und wenn nur veraltetes. Selbst übersetzen bei Redmine und ruby und rails garnicht geht, oder nur wenn man ein Jahr lang zeit hat alle Abhängigkeiten zu lösen.

Das hilft dir sicherlich nicht wirklich, aber ich möchte dir damit mein wohl empfundenes Beileid aussprechen, da ich weiß wie rottig das alles ist. Da ist es ein geringer trost, das man ja nix dafür bezahlen muss.
Benutzeravatar
dot
Establishment
Beiträge: 1743
Registriert: 06.03.2004, 18:10
Echter Name: Michael Kenzel
Kontaktdaten:

Re: Jammer-Thread

Beitrag von dot »

Ja wer verwendet auch schon Firefox? :P Firefox ist bei mir noch am selben Tag als die Chrome Beta rauskam von der Platte geflogen (2.5.2008), nachdem ich die Beta ca. 1h lang benutzt hatte...

Was Antialiasing betrifft seh ich kein dermaßen großes Problem. Nach dem was da steht kannst du einfach nur keine SwapChain mit Multisampled BackBuffer erzeugen, was imo eigentlich irgendwie logisch ist und ich auch nicht erwartet hätte. Du kannst immer noch selber in Multisampled Texturen rendern. Und bei dem ganzen Postprocessing das man heute so treibt, rendert sowieso keiner mehr direkt in den BackBuffer...
Zuletzt geändert von dot am 06.06.2012, 16:37, insgesamt 1-mal geändert.
Benutzeravatar
eXile
Establishment
Beiträge: 1136
Registriert: 28.02.2009, 13:27

Re: Jammer-Thread

Beitrag von eXile »

simbad hat geschrieben:Das hilft dir sicherlich nicht wirklich, aber ich möchte dir damit mein wohl empfundenes Beileid aussprechen, da ich weiß wie rottig das alles ist. Da ist es ein geringer trost, das man ja nix dafür bezahlen muss.
Ich habe hier Gitorious auf meinem Home-Server aufgesetzt; ich kenne deinen Schmerz. Und obwohl ich damit Ruby on Rails benutze, ist die Einrichtung noch immer alles andere als einfach. Zumal ich statt Apache lieber lighttpd für Gitorious und alles andere benutzt habe; und dafür gibt es exakt 0 Anleitungen im Internet (beispielsweise geht anständiges Proxying erst mit lighttpd 1.5).
dot hat geschrieben:Du kannst immer noch selber in Multisampled Texturen rendern. Und bei dem ganzen Postprocessing das man heute so treibt, rendert sowieso keiner mehr direkt in den BackBuffer...
Ja natürlich kann in ich Texture2DMSs rendern und dann via ResolveSubresource in den Back-Buffer kopieren. Oder halt die üblichen Post-Processing-Effekte beim Deferred-Shading machen; aber das musst du mir nicht erzählen.

Es geht mir eher darum, dass bei Metro eher Casual/Müsli-Programmierer dransitzen, die mal schnell eine Weltkugel oder ein paar Rechteck-Buttons rendern wollen, die dann beim anklicken bunt leuchten / runterfallen / was auch immer. Die wissen noch nicht einmal, was Deferred Shading ist.
Benutzeravatar
dot
Establishment
Beiträge: 1743
Registriert: 06.03.2004, 18:10
Echter Name: Michael Kenzel
Kontaktdaten:

Re: Jammer-Thread

Beitrag von dot »

Aber für die Dinge, die die Müsli Programmierer dann machen, brauchen sie kein Multisampling. Du musst bedenken, dass Metro selbst nur eine (fullscreen?) Swapchain ist, die eben kein Multisampling verwendet (ich frag mich schon seit langem, wieviel von Metro unter der Haube nicht sogar wirklich einfach nur eine stinknormale Desktopanwendung bzw. ein DWM on Drugs ist). Und deine Metro Anwendung tut am Ende nichts anderes als in die Swapchain von Metro reinzublitten. Und Metro muss auch auf deinen Content draufmalen können. Wenn jede Anwendung unterschiedliche Multisampling Settings verwenden könnte, würde das alles bestenfalls wahnsinnig kompliziert machen. Auch kannst du einen multisampled BackBuffer nicht einfach als FrontBuffer benutzen, weswegen Flipping mit sowas nicht möglich wäre.
Benutzeravatar
eXile
Establishment
Beiträge: 1136
Registriert: 28.02.2009, 13:27

Re: Jammer-Thread

Beitrag von eXile »

dot hat geschrieben:Aber für die Dinge, die die Müsli Programmierer dann machen, brauchen sie kein Multisampling.
Als ob. Jeder Horst erkennt die Jaggies am Dreieck, aber kein Arsch kennt Deferred Shading.
dot hat geschrieben:Du musst bedenken, dass Metro selbst nur eine (fullscreen?) Swapchain ist, die eben kein Multisampling verwendet (ich frag mich schon seit langem, wieviel von Metro unter der Haube nicht sogar wirklich einfach nur eine stinknormale Desktopanwendung bzw. ein DWM on Drugs ist).
Eine stinknormale Anwendung sicherlich nicht, da sie auch andere Anwendungen beliebig verstecken kann; aber ja, eine Integration in den DWM ist sehr wahrscheinlich.
dot hat geschrieben:Und deine Metro Anwendung tut am Ende nichts anderes als in die Swapchain von Metro reinzublitten.
Gerade und ausgerechnet das eben nicht!
http://msdn.microsoft.com/en-us/library/bb173077 hat geschrieben:When you call IDXGISwapChain1::Present1 on a flip model swap chain (DXGI_SWAP_EFFECT_FLIP_SEQUENTIAL) with 0 specified in the SyncInterval parameter, IDXGISwapChain1::Present1's behavior is the same as the behavior of Direct3D 9Ex's IDirect3DDevice9Ex::PresentEx with D3DSWAPEFFECT_FLIPEX and D3DPRESENT_FORCEIMMEDIATE.
Und zum D3DSWAPEFFECT_FLIPEX gibt es hier eine schöne Zeichnung.
dot hat geschrieben:Und Metro muss auch auf deinen Content draufmalen können. Wenn jede Anwendung unterschiedliche Multisampling Settings verwenden könnte, würde das alles bestenfalls wahnsinnig kompliziert machen. Auch kannst du einen multisampled BackBuffer nicht einfach als FrontBuffer benutzen, weswegen Flipping mit sowas nicht möglich wäre.
Überraschung: Auch Windows muss über gefensterte Anwendungen drüberzeichnen, die Multisampling benutzen und teilweise verdeckt sind. Und da klappt es ja wohl. Für mich sieht es eher so aus, dass gerade weil die nicht mehr Blitten, sondern Flippen, die in solche Probleme reinlaufen, weil die dann nicht einfach resolven können. Mit drängt sich gerade die Vermutung auf, die haben das alles durchgeplant und implementiert, und dann kam am Ende die Frage auf „oh was ist mit inkompatiblen Rendertargets“ und alle so OH SHIII~~~
Benutzeravatar
Schrompf
Moderator
Beiträge: 4996
Registriert: 25.02.2009, 23:44
Benutzertext: Lernt nur selten dazu
Echter Name: Thomas
Wohnort: Dresden
Kontaktdaten:

Re: Jammer-Thread

Beitrag von Schrompf »

Es läuft wieder. Ich finde aktuell nicht die Worte, um meinem maßlosen Hass angemessen Ausdruck zu verleihen. Ich weiß noch nichtmal, ob das ganze Manöver überhaupt mein Grundproblem der abgebrochenen Commits überhaupt gelöst hat. Ich habe nur versucht, Subversion zu aktualisieren, um auszuschließen, dass es sich um einen serverseitigen Bug handelt. Und das hat mich jetzt 7 Stunden meines Arbeitstages gekostet. UND ICH HAB NOCH NICHTMAL RAUS, OB ES ÜBERHAUPT GEHOLFEN HAT. Urg. Ich lass das mit der Softwareentwicklung sein und werde Schäfer.
Früher mal Dreamworlds. Früher mal Open Asset Import Library. Heutzutage nur noch so rumwursteln.
Benutzeravatar
dot
Establishment
Beiträge: 1743
Registriert: 06.03.2004, 18:10
Echter Name: Michael Kenzel
Kontaktdaten:

Re: Jammer-Thread

Beitrag von dot »

eXile hat geschrieben:
dot hat geschrieben:Und deine Metro Anwendung tut am Ende nichts anderes als in die Swapchain von Metro reinzublitten.
Gerade und ausgerechnet das eben nicht!
Ja, das war sehr unglücklich ausgedrückt. Bei dem "blitten" dachte ich eigentlich daran, dass das Metro Compositing eben deine Buffer direkt verwenden können muss, ohne noch groß was rumzukopieren. Das war natürlich völliger Schwachsinn so, verzeih, mein Hirn ist noch etwas mitgenommen von gestern Nacht ;)
eXile hat geschrieben:
dot hat geschrieben:Und Metro muss auch auf deinen Content draufmalen können. Wenn jede Anwendung unterschiedliche Multisampling Settings verwenden könnte, würde das alles bestenfalls wahnsinnig kompliziert machen. Auch kannst du einen multisampled BackBuffer nicht einfach als FrontBuffer benutzen, weswegen Flipping mit sowas nicht möglich wäre.
Überraschung: Auch Windows muss über gefensterte Anwendungen drüberzeichnen, die Multisampling benutzen und teilweise verdeckt sind.
Ja, aber Windows tut das in seinem eigenen Buffer. Metro wird das wohl aus Effizienzgründen teilweise in deinem Buffer machen wollen, wenn nicht grad irgendwelche Transitions oder Side by Side Kram laufen.
eXile hat geschrieben:Für mich sieht es eher so aus, dass gerade weil die nicht mehr Blitten, sondern Flippen, die in solche Probleme reinlaufen, weil die dann nicht einfach resolven können. Mit drängt sich gerade die Vermutung auf, die haben das alles durchgeplant und implementiert, und dann kam am Ende die Frage auf „oh was ist mit inkompatiblen Rendertargets“ und alle so OH SHIII~~~
Ja, genau daher kommen diese ganzen Einschränkungen natürlich. Ich find es ehrlich gesagt sehr sinnvoll diesen Overhead aus der Compositing Komponente rauszunehmen (kleine Formfaktoren, Battery Life etc.) und ich würde vermuten dass die das ganz genau so geplant haben ;)
Benutzeravatar
eXile
Establishment
Beiträge: 1136
Registriert: 28.02.2009, 13:27

Re: Jammer-Thread

Beitrag von eXile »

Vom Aspekt der Energieeffizient hast du natürlich vollkommen recht. ;) Das ist ein weiterer Grund, der dafür spricht, ist ja, dass Microsoft gerade 1 Multisample (= kein Anti-Aliasing; warum eigentlich?) genommen hat, und nicht z.B. immer 4 Multisamples gefordert hat. Damit muss ich von meiner Seite aus einfach die Feststellung treffen, dass Metro nicht nur von Müsli-Programmierern mit Programmen bedient wird, sonder dass die Metro-Anwendungen wohl auch für Müsli-Anwender sind, die keine Ansprüche haben.

Was ich davon wohl halten soll.
Antworten