Difference between revisions of "Texture Console"

From Second Life Wiki
Jump to navigation Jump to search
Line 5: Line 5:


'''Discard Level''' - A discard level of 0 means the highest available detail version of the texture. Discard level 1 means the second highest detail version, which is 1/2 the size in each dimension (and thus 1/4 the memory footprint in memory)
'''Discard Level''' - A discard level of 0 means the highest available detail version of the texture. Discard level 1 means the second highest detail version, which is 1/2 the size in each dimension (and thus 1/4 the memory footprint in memory)
==[[Linden_Lab_Official:Alternate_Viewers|HTTP viewer]] (Work in progress)==
'''First Line'''
<pre>
GL Tot:  A/B MB
    A:
    B:
Bound:  A/B MB
    A:
    B:
GBO:  X MB:
Raw Tot:  X MB:
Bias:  X
Cache:  A/B MB
    A:
    B:
</pre>
'''Second Line'''
<pre>
Net Tot Tex:  X MB:  Total size of textures downloaded over network in this
session.  Includes both UDP and HTTP transport.  Value is updated internally
on a 10-second timer and so lags other activity in the console.
Tot Obj:  X MB:
Tot Htp:  X:  Total number of HTTP requests issued for texture downloads.  Repeated
downloads (say, for existing or different discard levels) are counted individually.
Retries on connection or HTTP failures were counted in the past.  They are not counted currently.
Cread: X:  (NEW)  Count of cache reads requested by texture fetch code.
Cwrite:  X:  (NEW)  Count of cache writes requested by texture fetch code.
Rwait:  X:  (NEW)  Count of texture fetch requests that went to resource wait (HTW)
because the HTTP library had enough work stacked up.
</pre>
'''Third Line'''
<pre>
Textures:  X:  Number of textures known to the texture management system.  These
will be in various states of completeness.
Fetch:  A(B)
    A:  Number of outstanding texture fetch requests.
    B:  Number of completed fetch requests awaiting finalization (leading to deletion of the request).
Pkts:  A(B)
    A:  Count of UDP packets received containing texture header or image data.
    B:  Count of UDP packets received that could not be processed due to some error
such as corruption or invalid ordering or no valid request.
Cache R/W  A/B
    A:  Count of outstanding cache read requests
    B:  Count of outstanding cache write requests
LFS:  X:  Count of async file operation requests outstanding on the LFS worker
thread.  LFS shouldn’t be involved in texture operations anymore so probably not interesting.
RAW:  X:  Count of instances of LLImageRaw objects currently in the system.
HTP:  X:  Count of active HTTP request issued or queued for texture fetching.  Completion
will contribute to ‘Tot Htp’ above.
DEC:  X:  Count of requests outstanding for decoding of texture data.
CRE:  X:
BW:  X/Y
    X:
    Y:
</pre>
'''Fourth Line'''
<pre>
Tex UUID:
Area:
DDis(Req):
DecodePri(Fetch)
[download]
pk/max
State
Pkt:
Bnd:
W x H:
(Dis)
Mem
</pre>
Some patterns to look for when searching for bugs:
1.  If Cread is growing quickly while Cwrite and 'Tot Htp' are
static or growing slowly then the texture cache is populated
and being used.
2.  If Cwrite and 'Tot Htp' grow at about the same rate as
Cread, then either the texture cache is cold or it isn't working.
3.  If 'Tot Htp' is growing faster than 'Cwrite', then we're
doing unnecessary fetches for assets for some reason.


==1.14==
==1.14==

Revision as of 16:15, 9 November 2012

Definitions

Decode - Uncompressing a downloaded texture, in SL's case a JPEG2000 texture, into memory. Once it is decoded it will be handed to OpenGL.

Discard Level - A discard level of 0 means the highest available detail version of the texture. Discard level 1 means the second highest detail version, which is 1/2 the size in each dimension (and thus 1/4 the memory footprint in memory)

HTTP viewer (Work in progress)

First Line

GL Tot:  A/B MB
    A:
    B:
Bound:  A/B MB
    A:
    B:
GBO:  X MB:
Raw Tot:  X MB:
Bias:  X
Cache:  A/B MB
    A:
    B:

Second Line

Net Tot Tex:  X MB:  Total size of textures downloaded over network in this
 session.  Includes both UDP and HTTP transport.  Value is updated internally
 on a 10-second timer and so lags other activity in the console.

Tot Obj:  X MB:
Tot Htp:  X:  Total number of HTTP requests issued for texture downloads.  Repeated
 downloads (say, for existing or different discard levels) are counted individually.
 Retries on connection or HTTP failures were counted in the past.  They are not counted currently.
Cread: X:  (NEW)  Count of cache reads requested by texture fetch code.
Cwrite:  X:  (NEW)  Count of cache writes requested by texture fetch code.
Rwait:  X:  (NEW)  Count of texture fetch requests that went to resource wait (HTW)
 because the HTTP library had enough work stacked up.

Third Line

Textures:  X:  Number of textures known to the texture management system.  These
 will be in various states of completeness.

Fetch:  A(B)
    A:  Number of outstanding texture fetch requests.
    B:  Number of completed fetch requests awaiting finalization (leading to deletion of the request).

Pkts:  A(B)
    A:  Count of UDP packets received containing texture header or image data.
    B:  Count of UDP packets received that could not be processed due to some error
 such as corruption or invalid ordering or no valid request.

Cache R/W  A/B
    A:  Count of outstanding cache read requests
    B:  Count of outstanding cache write requests

LFS:  X:  Count of async file operation requests outstanding on the LFS worker
 thread.  LFS shouldn’t be involved in texture operations anymore so probably not interesting.

RAW:  X:  Count of instances of LLImageRaw objects currently in the system.

HTP:  X:  Count of active HTTP request issued or queued for texture fetching.  Completion
 will contribute to ‘Tot Htp’ above.

DEC:  X:  Count of requests outstanding for decoding of texture data.

CRE:  X:
BW:  X/Y
    X:
    Y:

Fourth Line

Tex UUID:
Area:
DDis(Req):
DecodePri(Fetch)
[download]
pk/max
State
Pkt:
Bnd:
W x H:
(Dis)
Mem

Some patterns to look for when searching for bugs:

1. If Cread is growing quickly while Cwrite and 'Tot Htp' are static or growing slowly then the texture cache is populated and being used.

2. If Cwrite and 'Tot Htp' grow at about the same rate as Cread, then either the texture cache is cold or it isn't working.

3. If 'Tot Htp' is growing faster than 'Cwrite', then we're doing unnecessary fetches for assets for some reason.

1.14

Texture Console

  • Important note: Unless the scene is *very* simple, this display only shows a tiny fraction of the number of textures. The textures displayed are active textures (i.e. textures that need more data) ordered by priority.
  • 1: Amount of texture data handed to OpenGL / Maximum amount SecondLife will hand to OpenGL*
  • 2: Amount of texture data currently bound by OpenGL / Threshold at which we decrease texture detail*
  • 3: Texture detail multiplier. > 1 indicates that texture detail is being decreased to fit into memory
  • 4: Graphical representation of 1. Red indicates that (3) will be increased
  • 5: Total number of textures currently referenced (i.e. nearby)
  • 6: Number of textures with data being actively fetched (number pending deletion)
  • 7: Number of textures waiting to be Read/Written to the local cache
  • 8: Graphical representation of 2
  • 9: First chunk of texture ID
  • 10: Area on screen. Approximate # of pixels this texture covers on-screen.
  • 11: Desired Discard Level. (see Discard definition) Is a function of area on screen and importance.
  • 12: Requested Discard Level. This is the clients record of the last discard level requested to the server. This is usually the same as Desired Discard Level, but may be larger if we have stopped requesting the texture because it is out of view (no area) or we have all of its data.
  • 13: Priority.
  • 14: Requested Priority.
  • 15: Data received. This bar fills up as the requested texture is downloaded. This is basically a download progress bar for the textures current Desired Discard Level (but will only fill up if the requested discard level is 0).
  • 16: Number of Packets received (numerical representation of 15)
  • 17: Max number of packets
  • 18: "---" see 27-33
  • 19: State: What state the texture fetcher is in for this texture
  • 20: Pkt:
    • White = packet received from simulator
    • Green = data requested from simulator
    • Yellow = texture processed by state machine
  • 21: Bnd:
    • Purple = Texture is currently bound (i.e. being rendered)
  • 22: Width x Height
  • 23: Actual Discarded level. This should eventually (after textures are downloaded and decoded) be the same as (11)Desired Discard Level.
  • 24: Amount of memory consumed by the texture
  • 25/26: Text Color
    • White = Normal priority image
    • Yellow = Selected image, prioritized
    • Orange = Image under mouse ("hover"), prioritized
    • Magenta = Boosted (prioritized) image
    • Green = UI image
    • Grey = Image not in state machine (hopefully because current discard <= desired discard)
  • 27-33
    • "---" - The texture is not being fetched (hopefully because current discard <= desired discard)
    • "INI" - The texture is waiting to be processed by the state machine
    • "DSK" - Reading from local cache (cyan=header, blue=body)
    • "NET" - Indicates the texture is in the network request queue, but has not yet been requested from the servers
    • "SIM" - Waiting for packet data from simulator
    • "URL" - Waiting for URL for HTTP request
    • "HTP" - Waiting for HTTP data
    • "DEC" - Decoding Image
    • "WRT" - Writing image to local cache
    • "END" - Waiting for a request for more data or deletion (after timeout)
    • "CRE/FUL/BAD/MIS" - Debug, shouldn't happen (needs create, fully loaded, bad, missing)

(*) These are functions of the 'Graphics Card Memory' setting under Preferences > Adv. Graphics

1.13

Texture Console

  • Important note: Unless the scene is *very* simple, this display only shows a tiny fraction of the number of textures. The textures displayed are active textures (i.e. textures that need more data) ordered by priority.
  • 1: Amount of texture data handed to OpenGL / Maximum amount SecondLife will hand to OpenGL*
  • 2: Amount of texture data currently bound by OpenGL / Threshold at which we decrease texture detail*
  • 3: Texture detail multiplier. > 1 indicates that texture detail is being decreased to fit into memory
  • 4: Graphical representation of 1. Red indicates that (3) will be increased
  • 5:
  • 6:
  • 7:
  • 8: Graphical representation of 2
  • 9: First chunk of texture ID
  • 10: Area on screen. Approximate # of pixels this texture covers on-screen.
  • 11: Desired Discard Level. (see Discard definition) Is a function of area on screen and importance.
  • 12: Requested Discard Level. This is the clients record of the last discard level requested to the server. This is usually the same as Desired Discard Level, but may be larger if we have stopped requesting the texture because it is out of view (no area) or we have all of its data.
  • 13: Priority.
  • 14: Requested Priority.
  • 15: Data received. This bar fills up as the requested texture is downloaded. This is basically a download progress bar for the textures current Desired Discard Level (but will only fill up if the requested discard level is 0).
  • 16: Number of Packets received (numerical representation of 15)
  • 17: Max number of packets
  • 18: A pip shows up here when a packet arrives
  • 19: A pip shows up here while the texture is being decoded
  • 20: A pip shows up here if the texture is being displayed (bound)
  • 21:
  • 22: Width x Height
  • 23: Actual Discarded level. This should eventually (after textures are downloaded and decoded) be the same as (11)Desired Discard Level.
  • 24: Amount of memory consumbed by the texture
  • 25: grey text.
  • 26: purple text.
  • 27: green text.
  • 28: *.
  • 29: *r.

(*) These are functions of the 'Graphics Card Memory' setting under Preferences > Adv. Graphics

Notes

  • 'Texture Memory' or 'OpenGL Memory' refers to data passed to the OpenGL drivers. Depending upon the graphics card and driver, this memory may be on the graphics card, in system memory, or (likely) both.