Summary: | Enabling Glamor takes half a second | ||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|
Product: | xorg | Reporter: | Paul Menzel <pmenzel+bugs.freedesktop.org> | ||||||||
Component: | Server/General | Assignee: | Xorg Project Team <xorg-team> | ||||||||
Status: | RESOLVED MOVED | QA Contact: | Xorg Project Team <xorg-team> | ||||||||
Severity: | normal | ||||||||||
Priority: | medium | CC: | pmenzel+bugs.freedesktop.org | ||||||||
Version: | git | ||||||||||
Hardware: | Other | ||||||||||
OS: | All | ||||||||||
Whiteboard: | |||||||||||
i915 platform: | i915 features: | ||||||||||
Attachments: |
|
FWIW, this only takes a few milliseconds on my systems. You'd have to profile where the time is spent on your system, but it's more likely somewhere between glamor and Mesa / LLVM than in the kernel. (In reply to Michel Dänzer from comment #1) > FWIW, this only takes a few milliseconds on my systems. Thank you for testing that. Could you please list the details for one of these systems (hardware, Linux version, X server versions, …)? > You'd have to profile where the time is spent on your system, but it's more > likely somewhere between glamor and Mesa / LLVM than in the kernel. Interesting. Is there a debug switch for the module glamoregl or do I need to use something like `perf` or `oprofile`? Fwiw, a few years ago, dlopen("libGL.so") took on the order of a second on a laptop HDD, which could be eliminated by prelinking. It might worth checking the exported symbol tables (objdump -T ?) to see if they are unnecessarily cumbersome. I tested this with an older Intel based Dell OptiPlex 7010, also with Debian Sid/unstable (Linux 4.17.3-1, and xserver-xorg-core 2:1.20.0-3) and an HDD – the other system has an SSD, the delay is with 1.8 seconds even bigger. ``` [ 26.041] (II) modeset(0): Creating default Display subsection in Screen section "Default Screen Section" for depth/fbbpp 24/32 [ 26.041] (==) modeset(0): Depth 24, (==) framebuffer bpp 32 [ 26.041] (==) modeset(0): RGB weight 888 [ 26.041] (==) modeset(0): Default visual is TrueColor [ 26.041] (II) Loading sub module "glamoregl" [ 26.041] (II) LoadModule: "glamoregl" [ 26.068] (II) Loading /usr/lib/xorg/modules/libglamoregl.so [ 26.253] (II) Module glamoregl: vendor="X.Org Foundation" [ 26.253] compiled for 1.20.0, module version = 1.0.1 [ 26.253] ABI class: X.Org ANSI C Emulation, version 0.4 [ 28.009] (II) modeset(0): glamor X acceleration enabled on Mesa DRI Intel(R) Ivybridge Desktop [ 28.009] (II) modeset(0): glamor initialized ``` Looking at the messages though, *loalding* the module takes 200 ms. “Running it” takes long. Do you want me to change the component to *xorg*? ``` $ objdump -T /usr/lib/xorg/modules/libglamoregl.so /usr/lib/xorg/modules/libglamoregl.so: file format elf64-x86-64 DYNAMIC SYMBOL TABLE: 0000000000000000 D *UND* 0000000000000000 miPolyArc 0000000000000000 D *UND* 0000000000000000 XNFstrdup 0000000000000000 D *UND* 0000000000000000 CreateSolidPicture 0000000000000000 DO *UND* 0000000000000000 epoxy_glBlendFunc 0000000000000000 DO *UND* 0000000000000000 epoxy_glXMakeCurrent 0000000000000000 D *UND* 0000000000000000 drmPrimeHandleToFD 0000000000000000 DO *UND* 0000000000000000 epoxy_glGetIntegerv 0000000000000000 DO *UND* 0000000000000000 epoxy_glUniform1fv 0000000000000000 DO *UND* 0000000000000000 epoxy_glGenTextures 0000000000000000 D *UND* 0000000000000000 miFillPolygon 0000000000000000 DO *UND* 0000000000000000 epoxy_glBufferStorage 0000000000000000 D *UND* 0000000000000000 fbPutImage 0000000000000000 D *UND* 0000000000000000 pixman_image_create_bits 0000000000000000 DO *UND* 0000000000000000 epoxy_eglTerminate 0000000000000000 DF *UND* 0000000000000000 GLIBC_2.2.5 close 0000000000000000 D *UND* 0000000000000000 lastGLContext 0000000000000000 DO *UND* 0000000000000000 epoxy_glDebugMessageCallback 0000000000000000 D *UND* 0000000000000000 miImageText16 0000000000000000 D *UND* 0000000000000000 miRenderColorToPixel 0000000000000000 DO *UND* 0000000000000000 epoxy_glDisableVertexAttribArray 0000000000000000 DF *UND* 0000000000000000 GLIBC_2.2.5 roundf 0000000000000000 DF *UND* 0000000000000000 GLIBC_2.2.5 ioctl 0000000000000000 D *UND* 0000000000000000 fbGetImage 0000000000000000 D *UND* 0000000000000000 GetGlyphs 0000000000000000 DF *UND* 0000000000000000 gbm_bo_get_offset 0000000000000000 DO *UND* 0000000000000000 epoxy_glDeleteFramebuffers 0000000000000000 DO *UND* 0000000000000000 epoxy_glReadPixels 0000000000000000 D *UND* 0000000000000000 serverClient 0000000000000000 DF *UND* 0000000000000000 epoxy_is_desktop_gl 0000000000000000 D *UND* 0000000000000000 drmGetMagic 0000000000000000 D *UND* 0000000000000000 CompositePicture 0000000000000000 D *UND* 0000000000000000 miChangeGC 0000000000000000 D *UND* 0000000000000000 fbCreateGC 0000000000000000 w D *UND* 0000000000000000 __gmon_start__ 0000000000000000 DF *UND* 0000000000000000 gbm_bo_import 0000000000000000 D *UND* 0000000000000000 pixman_image_get_stride 0000000000000000 DO *UND* 0000000000000000 epoxy_glXGetCurrentContext 0000000000000000 DO *UND* 0000000000000000 epoxy_glXGetCurrentDisplay 0000000000000000 DF *UND* 0000000000000000 epoxy_has_gl_extension 0000000000000000 D *UND* 0000000000000000 fbPolySegment 0000000000000000 D *UND* 0000000000000000 miCopyClip 0000000000000000 D *UND* 0000000000000000 DamageRegionAppend 0000000000000000 DO *UND* 0000000000000000 epoxy_glTexParameteri 0000000000000000 DF *UND* 0000000000000000 GLIBC_2.7 __isoc99_sscanf 0000000000000000 DF *UND* 0000000000000000 GLIBC_2.2.5 exit 0000000000000000 DF *UND* 0000000000000000 GLIBC_2.2.5 __assert_fail 0000000000000000 DO *UND* 0000000000000000 epoxy_glGetString 0000000000000000 D *UND* 0000000000000000 ErrorF 0000000000000000 D *UND* 0000000000000000 PictureMatchFormat 0000000000000000 DO *UND* 0000000000000000 epoxy_glTexImage2D 0000000000000000 DO *UND* 0000000000000000 epoxy_glUnmapBuffer 0000000000000000 D *UND* 0000000000000000 miHandleExposures 0000000000000000 DF *UND* 0000000000000000 gbm_bo_get_stride 0000000000000000 DF *UND* 0000000000000000 epoxy_has_egl_extension 0000000000000000 D *UND* 0000000000000000 LogMessageVerb 0000000000000000 D *UND* 0000000000000000 fbValidateGC 0000000000000000 DO *UND* 0000000000000000 epoxy_glGetError 0000000000000000 D *UND* 0000000000000000 RegionCreate 0000000000000000 DF *UND* 0000000000000000 GLIBC_2.2.5 malloc 0000000000000000 DO *UND* 0000000000000000 epoxy_glGetUniformLocation 0000000000000000 DO *UND* 0000000000000000 epoxy_glBindTexture 0000000000000000 D *UND* 0000000000000000 GetScratchGC 0000000000000000 DO *UND* 0000000000000000 epoxy_glTextureBarrierNV 0000000000000000 D *UND* 0000000000000000 fbDestroyPixmap 0000000000000000 D *UND* 0000000000000000 miDestroyClip 0000000000000000 DO *UND* 0000000000000000 epoxy_glUniform1i 0000000000000000 DO *UND* 0000000000000000 epoxy_glUniform2f 0000000000000000 D *UND* 0000000000000000 LogMessage 0000000000000000 D *UND* 0000000000000000 fbCopy1toN 0000000000000000 D *UND* 0000000000000000 fbFillSpans 0000000000000000 D *UND* 0000000000000000 fbTriangles 0000000000000000 DO *UND* 0000000000000000 epoxy_eglGetProcAddress 0000000000000000 D *UND* 0000000000000000 miPolyText8 0000000000000000 DO *UND* 0000000000000000 epoxy_glVertexAttribDivisor 0000000000000000 D *UND* 0000000000000000 RegionEmptyData 0000000000000000 D *UND* 0000000000000000 pixman_image_get_data 0000000000000000 DO *UND* 0000000000000000 epoxy_glDeleteProgram 0000000000000000 D *UND* 0000000000000000 XNFasprintf 0000000000000000 DO *UND* 0000000000000000 epoxy_glBindVertexArray 0000000000000000 DO *UND* 0000000000000000 epoxy_glMapBufferRange 0000000000000000 D *UND* 0000000000000000 miDestroyGC 0000000000000000 D *UND* 0000000000000000 xf86DrvMsg 0000000000000000 D *UND* 0000000000000000 miComputeCompositeRegion 0000000000000000 D *UND* 0000000000000000 miPushPixels 0000000000000000 D *UND* 0000000000000000 Xasprintf 0000000000000000 D *UND* 0000000000000000 dixRegisterPrivateKey 0000000000000000 DO *UND* 0000000000000000 epoxy_glDrawArraysInstanced 0000000000000000 D *UND* 0000000000000000 xf86ScreenToScrn 0000000000000000 w D *UND* 0000000000000000 _ITM_deregisterTMCloneTable 0000000000000000 D *UND* 0000000000000000 xf86Info 0000000000000000 DO *UND* 0000000000000000 epoxy_glLinkProgram 0000000000000000 D *UND* 0000000000000000 miPolyPoint 0000000000000000 DO *UND* 0000000000000000 epoxy_eglCreateImageKHR 0000000000000000 D *UND* 0000000000000000 fbReplicatePixel 0000000000000000 D *UND* 0000000000000000 miPolyText16 0000000000000000 DF *UND* 0000000000000000 GLIBC_2.2.5 free 0000000000000000 D *UND* 0000000000000000 RegionValidate 0000000000000000 DF *UND* 0000000000000000 GLIBC_2.2.5 strlen 0000000000000000 w D *UND* 0000000000000000 _ITM_registerTMCloneTable 0000000000000000 DO *UND* 0000000000000000 epoxy_glGetProgramiv 0000000000000000 D *UND* 0000000000000000 pixman_region_intersect 0000000000000000 DF *UND* 0000000000000000 epoxy_gl_version 0000000000000000 D *UND* 0000000000000000 RegionAppend 0000000000000000 D *UND* 0000000000000000 fbCopyNtoN 0000000000000000 DF *UND* 0000000000000000 GLIBC_2.8 __asprintf_chk 0000000000000000 D *UND* 0000000000000000 pixman_region_init_rects 0000000000000000 D *UND* 0000000000000000 fbPadPixmap 0000000000000000 DO *UND* 0000000000000000 epoxy_glGetShaderInfoLog 0000000000000000 DF *UND* 0000000000000000 gbm_bo_get_plane_count 0000000000000000 DO *UND* 0000000000000000 epoxy_glDebugMessageControl 0000000000000000 D *UND* 0000000000000000 fbPixmapToRegion 0000000000000000 w DF *UND* 0000000000000000 GLIBC_2.2.5 __cxa_finalize 0000000000000000 D *UND* 0000000000000000 miPolyGlyphBlt 0000000000000000 D *UND* 0000000000000000 miPolyFillArc 0000000000000000 D *UND* 0000000000000000 RegionEmptyBox 0000000000000000 DO *UND* 0000000000000000 epoxy_glCreateProgram 0000000000000000 DF *UND* 0000000000000000 gbm_bo_get_modifier 0000000000000000 D *UND* 0000000000000000 DamageDestroy 0000000000000000 D *UND* 0000000000000000 CreatePicture 0000000000000000 DF *UND* 0000000000000000 GLIBC_2.2.5 floorf 0000000000000000 D *UND* 0000000000000000 ValidatePicture 0000000000000000 D *UND* 0000000000000000 pixman_region_fini 0000000000000000 DO *UND* 0000000000000000 epoxy_glBindAttribLocation 0000000000000000 DO *UND* 0000000000000000 epoxy_glTexSubImage2D 0000000000000000 DO *UND* 0000000000000000 epoxy_glCompileShader 0000000000000000 D *UND* 0000000000000000 miImageGlyphBlt 0000000000000000 DO *UND* 0000000000000000 epoxy_glBufferData 0000000000000000 DF *UND* 0000000000000000 GLIBC_2.2.5 strstr 0000000000000000 D *UND* 0000000000000000 pixman_image_unref 0000000000000000 DF *UND* 0000000000000000 GLIBC_2.2.5 strcat 0000000000000000 DO *UND* 0000000000000000 epoxy_glShaderSource 0000000000000000 D *UND* 0000000000000000 FreePicture 0000000000000000 D *UND* 0000000000000000 pixman_image_composite 0000000000000000 D *UND* 0000000000000000 miTrapezoidBounds 0000000000000000 D *UND* 0000000000000000 miCompositeRects 0000000000000000 DO *UND* 0000000000000000 epoxy_glUniform4f 0000000000000000 D *UND* 0000000000000000 fbGetSpans 0000000000000000 D *UND* 0000000000000000 XNFvasprintf 0000000000000000 D *UND* 0000000000000000 pixman_rasterize_trapezoid 0000000000000000 DO *UND* 0000000000000000 epoxy_glGenFramebuffers 0000000000000000 DO *UND* 0000000000000000 epoxy_glCheckFramebufferStatus 0000000000000000 DO *UND* 0000000000000000 epoxy_eglInitialize 0000000000000000 DF *UND* 0000000000000000 gbm_bo_create_with_modifiers 0000000000000000 D *UND* 0000000000000000 miDoCopy 0000000000000000 D *UND* 0000000000000000 fbCreatePixmap 0000000000000000 DF *UND* 0000000000000000 drmGetDeviceNameFromFd2 0000000000000000 DO *UND* 0000000000000000 epoxy_glBindFragDataLocationIndexed 0000000000000000 DO *UND* 0000000000000000 epoxy_eglDestroyImageKHR 0000000000000000 D *UND* 0000000000000000 DamageDamageRegion 0000000000000000 DO *UND* 0000000000000000 epoxy_eglCreateContext 0000000000000000 D *UND* 0000000000000000 fbCopyNto1 0000000000000000 DO *UND* 0000000000000000 epoxy_glUniform4ui 0000000000000000 D *UND* 0000000000000000 dri3_screen_init 0000000000000000 DO *UND* 0000000000000000 epoxy_glUniform4fv 0000000000000000 D *UND* 0000000000000000 pixman_region_translate 0000000000000000 D *UND* 0000000000000000 xfont2_allocate_font_private_index 0000000000000000 D *UND* 0000000000000000 pixman_region_contains_point 0000000000000000 DO *UND* 0000000000000000 epoxy_glDeleteVertexArrays 0000000000000000 DO *UND* 0000000000000000 epoxy_glDeleteBuffers 0000000000000000 DF *UND* 0000000000000000 GLIBC_2.2.5 getenv 0000000000000000 DO *UND* 0000000000000000 epoxy_glUniform2fv 0000000000000000 DO *UND* 0000000000000000 epoxy_glEGLImageTargetTexture2DOES 0000000000000000 DO *UND* 0000000000000000 epoxy_glGenBuffers 0000000000000000 DO *UND* 0000000000000000 epoxy_glFinish 0000000000000000 DF *UND* 0000000000000000 GLIBC_2.2.5 __errno_location 0000000000000000 DO *UND* 0000000000000000 epoxy_glViewport 0000000000000000 D *UND* 0000000000000000 pixman_f_transform_from_pixman_transform 0000000000000000 DO *UND* 0000000000000000 epoxy_glFramebufferTexture2D 0000000000000000 D *UND* 0000000000000000 serverGeneration 0000000000000000 DF *UND* 0000000000000000 GLIBC_2.2.5 strdup 0000000000000000 DO *UND* 0000000000000000 epoxy_glFlush 0000000000000000 D *UND* 0000000000000000 miSyncShmScreenInit 0000000000000000 D *UND* 0000000000000000 miPolyRectangle 0000000000000000 D *UND* 0000000000000000 FreeScratchGC 0000000000000000 DF *UND* 0000000000000000 GLIBC_2.2.5 sincos 0000000000000000 DF *UND* 0000000000000000 GLIBC_2.4 __stack_chk_fail 0000000000000000 D *UND* 0000000000000000 miCopyGC 0000000000000000 DF *UND* 0000000000000000 gbm_create_device 0000000000000000 DO *UND* 0000000000000000 epoxy_glMapBuffer 0000000000000000 DO *UND* 0000000000000000 epoxy_glGetProgramivARB 0000000000000000 DO *UND* 0000000000000000 epoxy_glObjectLabel 0000000000000000 D *UND* 0000000000000000 miSyncGetScreenFuncs 0000000000000000 D *UND* 0000000000000000 pixman_region_subtract 0000000000000000 DO *UND* 0000000000000000 epoxy_glDrawArrays 0000000000000000 D *UND* 0000000000000000 ChangeGC 0000000000000000 D *UND* 0000000000000000 fbPolyFillRect 0000000000000000 DF *UND* 0000000000000000 gbm_bo_get_handle 0000000000000000 D *UND* 0000000000000000 PictureScreenPrivateKeyRec 0000000000000000 D *UND* 0000000000000000 fbSetSpans 0000000000000000 DF *UND* 0000000000000000 gbm_bo_get_fd 0000000000000000 DF *UND* 0000000000000000 gbm_device_destroy 0000000000000000 D *UND* 0000000000000000 miPolylines 0000000000000000 DO *UND* 0000000000000000 epoxy_glBindFramebuffer 0000000000000000 DO *UND* 0000000000000000 epoxy_eglBindAPI 0000000000000000 DF *UND* 0000000000000000 GLIBC_2.2.5 calloc 0000000000000000 D *UND* 0000000000000000 fbGetScreenPrivateKey 0000000000000000 DO *UND* 0000000000000000 epoxy_eglGetDisplay 0000000000000000 D *UND* 0000000000000000 DamageUnregister 0000000000000000 D *UND* 0000000000000000 pixman_region_copy 0000000000000000 D *UND* 0000000000000000 fbAddTraps 0000000000000000 DO *UND* 0000000000000000 epoxy_glDrawElements 0000000000000000 DO *UND* 0000000000000000 epoxy_glScissor 0000000000000000 DO *UND* 0000000000000000 epoxy_glDeleteTextures 0000000000000000 D *UND* 0000000000000000 XNFalloc 0000000000000000 DF *UND* 0000000000000000 LIBBSD_0.7 reallocarray 0000000000000000 DO *UND* 0000000000000000 epoxy_glXGetCurrentDrawable 0000000000000000 D *UND* 0000000000000000 ValidateGC 0000000000000000 D *UND* 0000000000000000 DamageRegionProcessPending 0000000000000000 D *UND* 0000000000000000 miImageText8 0000000000000000 D *UND* 0000000000000000 DamageRegister 0000000000000000 DO *UND* 0000000000000000 epoxy_glBindBuffer 0000000000000000 DF *UND* 0000000000000000 gbm_bo_create 0000000000000000 DO *UND* 0000000000000000 epoxy_glVertexAttribPointer 0000000000000000 D *UND* 0000000000000000 pixman_f_transform_point 0000000000000000 D *UND* 0000000000000000 miPolySegment 0000000000000000 DF *UND* 0000000000000000 gbm_bo_get_stride_for_plane 0000000000000000 DF *UND* 0000000000000000 gbm_bo_get_height 0000000000000000 DO *UND* 0000000000000000 epoxy_glPixelStorei 0000000000000000 DO *UND* 0000000000000000 epoxy_glDisable 0000000000000000 DO *UND* 0000000000000000 epoxy_glAttachShader 0000000000000000 DO *UND* 0000000000000000 epoxy_glEnableVertexAttribArray 0000000000000000 DO *UND* 0000000000000000 epoxy_glEnable 0000000000000000 DF *UND* 0000000000000000 GLIBC_2.2.5 realloc 0000000000000000 D *UND* 0000000000000000 drmAuthMagic 0000000000000000 D *UND* 0000000000000000 pixman_region_rectangles 0000000000000000 DO *UND* 0000000000000000 epoxy_glGenVertexArrays 0000000000000000 DO *UND* 0000000000000000 epoxy_glGetShaderiv 0000000000000000 D *UND* 0000000000000000 xfont2_font_set_private 0000000000000000 DO *UND* 0000000000000000 epoxy_eglMakeCurrent 0000000000000000 D *UND* 0000000000000000 PixmapWidthPaddingInfo 0000000000000000 D *UND* 0000000000000000 miCopyRegion 0000000000000000 D *UND* 0000000000000000 miChangeClip 0000000000000000 D *UND* 0000000000000000 DamageCreate 0000000000000000 D *UND* 0000000000000000 FatalError 0000000000000000 DF *UND* 0000000000000000 GLIBC_2.2.5 sqrt 0000000000000000 D *UND* 0000000000000000 RegionDestroy 0000000000000000 D *UND* 0000000000000000 xf86AllocateScrnInfoPrivateIndex 0000000000000000 DF *UND* 0000000000000000 GLIBC_2.14 memcpy 0000000000000000 DO *UND* 0000000000000000 epoxy_glUseProgram 0000000000000000 DO *UND* 0000000000000000 epoxy_glDeleteShader 0000000000000000 DO *UND* 0000000000000000 epoxy_glCreateShader 0000000000000000 DO *UND* 0000000000000000 epoxy_glActiveTexture 0000000000000000 DF *UND* 0000000000000000 GLIBC_2.2.5 open 0000000000000000 D *UND* 0000000000000000 MakeAtom 0000000000000000 DO *UND* 0000000000000000 epoxy_glGetProgramInfoLog 0000000000000000 DO *UND* 0000000000000000 epoxy_glUniform1f 0000000000000000 DO *UND* 0000000000000000 epoxy_glUniformMatrix3fv 0000000000000000 DF *UND* 0000000000000000 gbm_bo_destroy 0000000000000000 DO *UND* 0000000000000000 epoxy_glLogicOp 0000000000000000 D *UND* 0000000000000000 fbComposite 000000000000be00 g DF .text 0000000000000073 Base glamor_destroy_gc 00000000002314a0 g DO .data 0000000000000018 Base glamoreglModuleData 000000000000be80 g DF .text 00000000000001b6 Base glamor_validate_gc 00000000000090d0 g DF .text 000000000000016d Base glamor_set_pixmap_texture 0000000000025304 g DF .fini 0000000000000000 Base _fini 0000000000009520 g DF .text 00000000000009f5 Base glamor_init 0000000000009fe0 g DF .text 0000000000000050 Base glamor_set_drawable_modifiers_func 0000000000007300 g DF .text 0000000000000089 Base glamor_gbm_bo_from_pixmap 0000000000022d30 g DF .text 0000000000000072 Base glamor_change_window_attributes 0000000000007ef0 g DF .text 00000000000000f7 Base glamor_egl_fd_name_from_pixmap 0000000000009f20 g DF .text 0000000000000002 Base glamor_fini 0000000000006d80 g DF .text 000000000000000c Base glamor_get_formats 00000000000237a0 g DF .text 00000000000000b1 Base glamor_pixmap_exchange_fbos 0000000000008920 g DF .text 000000000000022d Base glamor_close_screen 0000000000007900 g DF .text 0000000000000088 Base glamor_pixmap_from_fd 000000000000a0b0 g DF .text 000000000000011e Base glamor_fds_from_pixmap 00000000000085f0 g DF .text 00000000000001b3 Base glamor_xv_init 000000000000bc10 g DF .text 0000000000000110 Base glamor_copy_window 0000000000008b50 g DF .text 0000000000000406 Base glamor_create_pixmap 0000000000009240 g DF .text 0000000000000060 Base glamor_get_pixmap_texture 0000000000007990 g DF .text 0000000000000116 Base glamor_egl_exchange_buffers 0000000000009f30 g DF .text 0000000000000053 Base glamor_enable_dri3 0000000000007610 g DF .text 000000000000005f Base glamor_egl_create_textured_screen 000000000000a390 g DF .text 0000000000000076 Base glamor_finish 0000000000009030 g DF .text 000000000000009f Base glamor_set_pixmap_type 000000000000a1d0 g DF .text 00000000000000d6 Base glamor_fd_from_pixmap 0000000000009310 g DF .text 0000000000000076 Base glamor_block_handler 00000000002317f0 g D .bss 0000000000000000 Base __bss_start 00000000000070f0 g DF .text 000000000000020b Base glamor_egl_create_textured_pixmap_from_gbm_bo 0000000000231a98 g D .bss 0000000000000000 Base _end 0000000000009f90 g DF .text 000000000000004f Base glamor_supports_pixmap_import_export 0000000000008070 g DF .text 00000000000000e4 Base glamor_egl_screen_init 00000000000074f0 g DF .text 0000000000000116 Base glamor_egl_create_textured_pixmap 0000000000007670 g DF .text 0000000000000287 Base glamor_pixmap_from_fds 0000000000006d90 g DF .text 000000000000000c Base glamor_get_modifiers 00000000000070c0 g DF .text 0000000000000024 Base glamor_egl_get_gbm_device 00000000000084e0 g DF .text 0000000000000006 Base glamor_egl_init_textured_pixmap 0000000000008160 g DF .text 0000000000000375 Base glamor_egl_init 000000000000c410 g DF .text 000000000000006b Base glamor_create_gc 000000000000a2b0 g DF .text 0000000000000022 Base glamor_shareable_fd_from_pixmap 00000000002317f0 g D .data 0000000000000000 Base _edata 0000000000007e10 g DF .text 00000000000000d2 Base glamor_egl_fds_from_pixmap 000000000000a2e0 g DF .text 00000000000000af Base glamor_name_from_pixmap 0000000000007390 g DF .text 0000000000000157 Base glamor_back_pixmap_from_fd 00000000000087b0 g DF .text 0000000000000026 Base glamor_destroy_pixmap 0000000000005fb0 g DF .init 0000000000000000 Base _init 000000000000a030 g DF .text 0000000000000074 Base glamor_get_drawable_modifiers ``` ``` $ lspci -nn 00:00.0 Host bridge [0600]: Intel Corporation Xeon E3-1200 v2/3rd Gen Core processor DRAM Controller [8086:0150] (rev 09) 00:02.0 VGA compatible controller [0300]: Intel Corporation Xeon E3-1200 v2/3rd Gen Core processor Graphics Controller [8086:0162] (rev 09) 00:14.0 USB controller [0c03]: Intel Corporation 7 Series/C210 Series Chipset Family USB xHCI Host Controller [8086:1e31] (rev 04) 00:16.0 Communication controller [0780]: Intel Corporation 7 Series/C216 Chipset Family MEI Controller #1 [8086:1e3a] (rev 04) 00:19.0 Ethernet controller [0200]: Intel Corporation 82579LM Gigabit Network Connection [8086:1502] (rev 04) 00:1a.0 USB controller [0c03]: Intel Corporation 7 Series/C216 Chipset Family USB Enhanced Host Controller #2 [8086:1e2d] (rev 04) 00:1b.0 Audio device [0403]: Intel Corporation 7 Series/C216 Chipset Family High Definition Audio Controller [8086:1e20] (rev 04) 00:1d.0 USB controller [0c03]: Intel Corporation 7 Series/C216 Chipset Family USB Enhanced Host Controller #1 [8086:1e26] (rev 04) 00:1f.0 ISA bridge [0601]: Intel Corporation Q77 Express Chipset LPC Controller [8086:1e47] (rev 04) 00:1f.2 SATA controller [0106]: Intel Corporation 7 Series/C210 Series Chipset Family 6-port SATA Controller [AHCI mode] [8086:1e02] (rev 04) 00:1f.3 SMBus [0c05]: Intel Corporation 7 Series/C216 Chipset Family SMBus Controller [8086:1e22] (rev 04) ``` Michel, Chris, I just noticed, that the delay is only there when starting the X.Org X server for the first time. Could you please make sure, that your systems are rebooted when trying this? (During my tests I do not use a graphical login manager, and just log in on a terminal and execute `exec startx`.) Created attachment 140630 [details]
Output of `strace -tt -f startx`
I traced the startup with strace. Of course it’s slower that way, but there are several delays in there. Also, a lot of libraries are loaded seeming to take some time.
Here are the biggest “delays” I found.
278 18:30:40.366920 stat64("/usr/lib/xorg/modules/libglamoregl.so/", 0xbfa34efc) = -1 ENOTDIR (Not a directory)
278 18:30:40.390224 stat64("/usr/lib/xorg/modules/libglamoregl.so/", 0xbfa34efc) = -1 ENOTDIR (Not a directory)
278 18:30:40.666582 write(4, "(II) Loading sub module \"glamore"..., 36) = 36
278 18:30:40.671594 openat(AT_FDCWD, "/usr/lib/xorg/modules/libglamoregl.so", O_RDONLY|O_CLOEXEC) = 12
278 18:30:40.712147 write(4, "(II) Module glamoregl: vendor=\"X"..., 49) = 49
278 18:30:40.790228 openat(AT_FDCWD, "/lib/i386-linux-gnu/libncurses.so.6", O_RDONLY|O_CLOEXEC) = 12
278 18:30:40.790515 read(12, "\177ELF\1\1\1\0\0\0\0\0\0\0\0\0\3\0\3\0\1\0\0\0 ^\0\0004\0\0\0"..., 512) = 512
278 18:30:40.791695 fstat64(12, {st_mode=S_IFREG|0644, st_size=169280, ...}) = 0
278 18:30:40.792144 mmap2(NULL, 172472, PROT_READ|PROT_EXEC, MAP_PRIVATE|MAP_DENYWRITE, 12, 0) = 0xb1fc6000
278 18:30:40.792444 mmap2(0xb1fef000, 8192, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_FIXED|MAP_DENYWRITE, 12, 0x28000) = 0xb1fef000
278 18:30:40.794183 close(12) = 0
278 18:30:40.802657 mprotect(0xb2015000, 8192, PROT_READ) = 0
278 18:30:40.804863 mprotect(0xb1fef000, 4096, PROT_READ) = 0
278 18:30:40.807819 mprotect(0xb204c000, 4096, PROT_READ) = 0
278 18:30:40.820933 mprotect(0xb21c5000, 24576, PROT_READ) = 0
→ 278 18:30:41.011259 mprotect(0xb5fc9000, 2596864, PROT_READ) = 0
278 18:30:41.012249 mprotect(0xb62c1000, 4096, PROT_READ) = 0
278 18:30:41.013082 mprotect(0xb62cd000, 4096, PROT_READ) = 0
278 18:30:41.013659 mprotect(0xb62d7000, 4096, PROT_READ) = 0
278 18:30:41.014194 mprotect(0xb62e7000, 4096, PROT_READ) = 0
→ 278 18:30:41.022997 mprotect(0xb6efd000, 286720, PROT_READ) = 0
278 18:30:41.033617 futex(0xb6264f6c, FUTEX_WAKE_PRIVATE, 2147483647) = 0
→ 278 18:30:41.094631 time(NULL) = 1531499441 (2018-07-13T18:30:41+0200)
278 18:30:41.095152 openat(AT_FDCWD, "/sys/devices/system/cpu/online", O_RDONLY|O_CLOEXEC) = 12
278 18:30:41.095808 read(12, "0-1\n", 8192) = 4
278 18:30:41.096267 close(12) = 0
278 18:30:41.160224 brk(0x12c6000) = 0x12c6000
278 18:30:41.167493 munmap(0xb72a9000, 71088) = 0
→ 278 18:30:41.171051 getrandom("\x0a\xce\xa9\x46", 4, GRND_NONBLOCK) = 4
278 18:30:41.172796 openat(AT_FDCWD, "/etc/drirc", O_RDONLY|O_LARGEFILE) = 12
278 18:30:41.199927 openat(AT_FDCWD, "/home/kodi/.drirc", O_RDONLY|O_LARGEFILE) = -1 ENOENT (No such file or directory)
278 18:30:41.204172 fstat64(12, {st_mode=S_IFCHR|0660, st_rdev=makedev(226, 0), ...}) = 0
278 18:30:41.208846 ioctl(13, DRM_IOCTL_RADEON_INFO, 0xbfa3661c) = 0
278 18:30:41.211268 ioctl(13, DRM_IOCTL_RADEON_INFO, 0xbfa3661c) = 0
278 18:30:41.233996 stat64("/home/kodi/.cache/mesa_shader_cache", {st_mode=S_IFDIR|0755, st_size=4096, ...}) = 0
278 18:30:41.248494 openat(AT_FDCWD, "/home/kodi/.cache/mesa_shader_cache/index", O_RDWR|O_CREAT|O_LARGEFILE|O_CLOEXEC, 0644) = 14
278 18:30:41.249985 fstat64(14, {st_mode=S_IFREG|0644, st_size=1310728, ...}) = 0
278 18:30:41.269060 ioctl(11, DRM_IOCTL_GET_CAP, 0xbfa3671c) = 0
278 18:30:41.275748 brk(0x12e7000) = 0x12e7000
278 18:30:41.280202 openat(AT_FDCWD, "/etc/ld.so.cache", O_RDONLY|O_CLOEXEC) = 14
278 18:30:41.280815 fstat64(14, {st_mode=S_IFREG|0644, st_size=71088, ...}) = 0
278 18:30:41.335827 munmap(0xb72ab000, 65536) = 0
278 18:30:41.335940 brk(0x1324000) = 0x1324000
278 18:30:41.349009 ioctl(13, DRM_IOCTL_RADEON_GEM_CREATE, 0xbfa366f0) = 0
278 18:30:41.349819 getpid() = 278
278 18:30:41.350429 mmap2(NULL, 4096, PROT_READ|PROT_WRITE|PROT_EXEC, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0xb7f87000
278 18:30:41.357399 futex(0xb715a8b8, FUTEX_WAKE_PRIVATE, 2147483647) = 0
278 18:30:41.358249 getpid() = 278
Created attachment 140631 [details]
X.Org X Server 1.20.0 log run under strace
-- GitLab Migration Automatic Message -- This bug has been migrated to freedesktop.org's GitLab instance and has been closed from further activity. You can subscribe and participate further through the new bug through this link to our GitLab instance: https://gitlab.freedesktop.org/xorg/xserver/issues/543. |
Use of freedesktop.org services, including Bugzilla, is subject to our Code of Conduct. How we collect and use information is described in our Privacy Policy.
Created attachment 140548 [details] X.Org X Server 1.20.0 log The X.Org X Server start up takes well over a second on an ASRock E350M1. Debian Sid/unstable with Linux 4.18-rc4+ is used. Looking at the log, there is half a second delay right below. ``` [ 78.639] X.Org X Server 1.20.0 X Protocol Version 11, Revision 0 […] [ 78.796] (II) Module glamoregl: vendor="X.Org Foundation" [ 78.796] compiled for 1.20.0, module version = 1.0.1 [ 78.796] ABI class: X.Org ANSI C Emulation, version 0.4 [ 79.294] (II) RADEON(0): glamor X acceleration enabled on AMD PALM (DRM 2.50.0 / 4.18.0-rc4-00832-g217000c98815, LLVM 6.0.1) […] ```