JeremyK's [MSFT] WebLog

  • Making Heads and Tails of Roles in PSS

    Ever wondered what are all the different roles are in Exchange PSS support experience? Well maybe this might help… below is a brief explanation of each of the different roles that you may encounter when engaging PSS.

     

    Technical Router

    This person is the first person to take a call, validate account information, and properly route it to the best group to handle your issue based upon the information and description of the problem provided. In addition they can provide released hotfixes or direct customer to other resources if the call is not within the scope of PSS.

     

    Support Professional/Engineer (SEs)

    These individual are skilled with diagnosing common issues and are typically the first truly technical individuals. SEs relies upon broad product knowledge, experience, internal knowledge base, advanced training, and sneaker net to diagnose customer issues and provide a solution. Depending upon product, SEs has a designated phone time and research time. Issues requiring lengthy investigation process or where standard diagnostic tools do not yield a direction are escalated to Problem Control SEs. For the Exchange Support Team, SEs are split up by area of specialty:

     

    Administration (XADM)

    Connectors (XCON)

    Client and Connectivity (XCSI)

     

    Technical Lead

    Each team (approximately 14 SEs) has a Technical Lead. This individual is a resource to help SEs within a specialty with difficult issues, provide technical or procedural direction when needed, and work with other TLs to drive training needs for their specialty teams.

     

    3rd Tier Support Engineer

    A recent new support offering is a 3rd tier contract, where customers call in directly into a group of senior support engineers/TL caliber individuals. These individuals also handle server down situations and escalate to our escalation services team accordingly. These individuals work in pods of 4, where each specialty is represented (Xadm typically has two per pod).

     

    Beta Support Engineer

    These are SEs that has been given an opportunity to focus on products about to enter the beta lifecycle. They focus on developing the advance training for Support Engineers to support the product when released, providing support for early adopters, and driving critical changes into the product based upon their support experience with early adopters.

     

    Problem Control SE

    As a member of the Escalation Services Team, these individuals are the most product knowledgeable individuals that utilize advanced diagnostics and tools to troubleshoot issues where solutions are unknown or where the issue severity requires more management of the situation. These individuals are not tied to a phone schedule and are dedicated to working difficult, challenging cases.

     

    Escalation Engineer

    Also part of Escalation Services Team, these individuals are the last line of support within PSS. These individuals rely upon development type skills and debugging to diagnose and solve issues more than product knowledge. Issues requiring crash dump analysis, private build instrumentation, and possible hotfixes to resolve the issue come to this group. These individuals also manage the most politically challenging issues. Less than 1% of all Exchange Issues ever reach the need for this level of investigation or engagement. This group interacts with the Exchange Product Team to investigate code changes and release hotfixes to correct bugs in the product.

     

    Team Manager

    A team manager is responsible for approximately 14 Support Engineers and a Technical Lead. They ensure support engineers are working towards goals in service delivery, roadblocks are cleared for support engineers, ensure the customer are satisfied with the progress of cases, and to generally the business of support is running smoothly.

     

    Escalation Manager

    This is a manager in the Escalation Services Team. These individuals own managing escalation processes for a product (ie Exchange, Outlook, Sharepoint) and manage a team of Problem Control SEs or Escalation Engineers. They are drawn into politically challenging issues requiring a higher degree of visibility within Microsoft.

     

    Technical Account Manager

    When a customer buys a support contract through Premier services, they are also assigned a Technical Account Manager (TAM). Depending upon the size of the contract, customer receive anywhere from 1/10 of a TAM (where a TAM manages a maximum of 10 accounts) to a multiple dedicated TAMs. These individuals are the customer’s liaison into support. They are responsible for ensuring each service request opened by their accounts is progressing smoothly, monitor and provide proactive information relevant to each customer, manage the escalation process for a customer, and ensure their customer are happy with the support they receive from Microsoft.

  • Attention all Recruiters

     

    I must have been pinged a dozen times since I put up my blog by recruiters looking to sway me away from one of the best companies to work for. The opportunities they offer are to “deploy” or “consult” in the deployment of Microsoft Technologies, not to innovate the next generation of products… While this may interest others, it isn't my carrot. It is absolutely essential to the success of Microsoft to help customers adopt technologies through opportunities like these,  but I've been there and done that and it wasn't satisfying for me personally. It is far more exciting to innovate and drive changes into our products that enhance the stability of systems.

     

    So to those Recruiters out there picking through these blogs for people interested in chasing money for short term gains...

     

    Guess what I AM NOT INTERESTED! Please move on to the next guy...

     

  • Follow up to "Large Messages Affect Server Performance"

    This is a follow up to a previous post I made: http://blogs.msdn.com/jeremyk/archive/2004/02/29/81773.aspx

    The final fix for this issue in Exchange 2000 (836738)  was released several weeks ago, but a problem was discovered unrelated to this change that required the fix to be pulled internally. We are currently working on release a new version that will be available in the next week or two.

    For Exchange 2003, these changes will be first introduced in Exchange 2003 Service Pack 2.

     

     

     

  • Determine the True amount of WhiteSpace in an Exchange Database

    So we come across this from time to time so I thought it would be interesting to talk about… besides I needed something to show that I still cared about my blog.

     

    So the question is…

     

    “If I add up all the space used by mailboxes, why doesn’t roughly match the size of the database? And what does that number represent in the 1221 event I receive?”

     

     

    First looking at the 1221 event:

     

           Event: 1221  

           Source: MSExchangeIS Public

           Type: Information   

           Category: General   

           Description:

         The database "<storage_group>\<mailbox_store> (<server_name>)" has

         <nnn> megabytes of free space after online defragmentation has

           terminated.

     

    The number presented is derived from the number of free pages that are available at the database root, the messages table, folders, and the attachments table. Statistically over the years we know these tables represent nearly 90% of the space used in the database.

     

    To understand the reasoning behind this, a quicker primer on space management in the database is needed. Here are the some aspects to keep in mind:

     

    ·         The fundamental space allocation is a 4k page.

    ·         A series of 16 consecutive pages is the amount of space that is allocated to a table when space is requested. (not just one page at a time)  

    ·         A page cannot store data from two different tables or belong from two different trees.

     

    There are two levels of space management that occurs in the database. One is at the global database level (space available to all tables in the database store in ranges of 16 consecutive pages) and at the B+tree level. If you are unfamiliar with the concepts of B+Trees, it may be easier to think of them as a Table. Tables maintain the state of pages they own and do not free up pages to the overall database until 16 consecutive block of pages is freed up. The reason for this is efficiency… by reusing pages that are physically adjacent to existing pages we minimize the effort necessary to perform read and write operations. So by holding onto pages we ensure that a larger majority of pages are physically adjacent.

     

    In a database, we could literally have thousands of tables (at least one for each folder in every mailbox). As I mentioned, we know statistically the messages and attachment tables represent 90% of the space used in the database. Likewise they would have the also have the greatest percentage of free space, or commonly referred to as white space in the database.

     

    In order to arrive at a calculation for the amount of available space an individual table possesses, we have to a lot of work interrogating the space usage information of the table. If we were to do this for thousands of tables, it would take incredible amount of time to perform this overall calculation. Given the greatest majority of space statistically exists at the root, in the messages table, and attachments table and the amount of time it takes to calculate space, we only take consideration this information when logging the 1221 event.

     

    So there is also a lot of other stuff hidden away in the database that mailboxes are not charged for. For example there are search folders, indexes, and system tables that allow Exchange to operate. In addition, we have already stated that a page cannot belong to multiple tables, so if a page does have free space, it can only store new records for that table and further more, it will only contain records meet the criteria to be stored on that page. If you stored every record beginning with the letter “A” on one page and every record beginning with “B” on  a second page, there is no reason a record beginning with “A” should appear on the page containing all the “B” values. Therefore there can be space available on a individual page that also isn’t taken take into consideration when calculating the 1221 event since we only add up the empty/free pages in the messages and attachment tables.

     

    Online Defragmentation takes aim at “compressing” records to fewer pages in a particular table. For example, if a table owned 100 pages, each half full, online defrag will attempt to free approximately half of the pages. When 16 contiguous pages are freed, the space is released back to the database itself to be used by other tables in the database. It is only the pages that are freed up in the messages and attachments tables that eventually get reported.

     

    If you want to take a more in-depth look at the space used in the database, then a space dump using ESEUTIL is necessary. For example (note the output is truncated for brevity):

     

     

    C:\Program Files\Exchsrvr\MDBDATA>..\bin\eseutil /ms priv1.edb

     

    Microsoft(R) Exchange Server Database Utilities

    Version 6.5

    Copyright (C) Microsoft Corporation. All Rights Reserved.

     

    Initiating FILE DUMP mode...

             Database: priv1.edb

     

    ****************************** SLV SPACE DUMP ******************************

    Chunk          Free Res Del Com  |------------ Used ------------|

    ============================================================================

    512             110   0   0 402  *************************

    1024              0 512   0   0  ********************************

    1536            512   0   0   0

    2048            512   0   0   0

    2560            512   0   0   0

    3072            512   0   0   0

    3584            512   0   0   0

    4096            512   0   0   0

    4608            118   0   0 394  ************************

    5120              0   0   0 512  ********************************

    5632              0   0   0 512  ********************************

    6144              0   0   0 512  ********************************

    6656              0   0   0 512  ********************************

    7168              0   0   0 512  ********************************

    7680              0   0   0 512  ********************************

    8192            238   0   0 274  *****************

    ============================================================================

    TOTALS:

             Free:         3538

         Reserved:          512

          Deleted:            0

        Committed:         4142

          Unknown:            0

                  -------------

                           8192

    ****************************************************************************

     

     

    ******************************** SPACE DUMP ***********************************

    Name                   Type   ObjidFDP    PgnoFDP  PriExt      Owned  Available

    ===============================================================================

    priv1.edb               Db           1          1   256-m       8960        116

    <SLV Avail Map>         SLV          6         33    32-m         32         29

    <SLV Owner Map>         SLV          7         65    32-m         80          3

     

    1-122                   Tbl         75        301     8-s          8          3

      MsgFolderIndex7       Idx         77        302     1-s          1          0

      MsgFolderIndexPtagDel Idx         80        305     1-s          1          0

      MsgFolderIndexURLComp Idx         79        304     1-s          1          0

      RuleMsgFolderIndex    Idx         78        303     1-s          1          0

    1-23                    Tbl         61        236     2-m       7778         16

      <Long Values>         LV         222        237     1-m       7691          8

    1-24                    Tbl         63        257     8-s          8          3

      MsgFolderIndex7       Idx         65        258     1-s          1          0

      MsgFolderIndexPtagDel Idx         68        261     1-s          1          0

      MsgFolderIndexURLComp Idx         67        260     1-s          1          0

      RuleMsgFolderIndex    Idx         66        259     1-s          1          0

    1-33                    Tbl        336       8821     8-m         14          1

      <Long Values>         LV         342       8826     1-m          5          2

      ?T668f-T6654+Q3f88    Idx        354       8827     1-s          1          0

      MsgFolderIndex7       Idx        338       8822     1-s          1          0

      MsgFolderIndexPtagDel Idx        341       8825     1-s          1          0

      MsgFolderIndexURLComp Idx        340       8824     1-s          1          0

      RuleMsgFolderIndex    Idx        339       8823     1-s          1          0

    Folders                 Tbl          8         97     9-m        100         10

      <Long Values>         LV         105        243     1-s          1          0

      *T668f+Q6749+S3001+Q6 Idx         60        232     1-s          1          0

      ?T668f+Q6749+S3001+Q6 Idx         59        109     1-m          9          0

      Folders Fid to Pfid I Idx         17        108     1-m          9          2

      FoldersIndex10        Idx         13        102     1-s          1          0

      FoldersIndex13        Idx         14        103     1-s          1          0

      FoldersIndex5         Idx          9         98     1-m          5          1

      FoldersIndex6         Idx         10         99     1-s          1          0

      FoldersIndex7         Idx         11        100     1-m          7          0

      FoldersIndex8         Idx         12        101     1-s          1          0

      Hashed URL Name Index Idx         15        104     1-m          5          0

      ScopeFIDs DeleteTime  Idx         16        105     1-s          1          0

    Mailbox                 Tbl         21        140     2-m         10          2

      MailboxIndex2         Idx         22        141     1-s          1          0

      MailboxIndex3         Idx         23        160     1-s          1          0

    Msg                     Tbl         19        112     2-m        194         63

      <Long Values>         LV         106        359     1-m         14          0

    -------------------------------------------------------------------------------

                                                                                253

     

    First Lets take a look at this row. There is two columns, the owned and available. The owned value is the number of pages in the database that contains *some* data.  The next value, available, represents the number of free pages available at the database root level that can be distributed to tables as they need space to grow.

     

    ******************************** SPACE DUMP ***********************************

    Name                   Type   ObjidFDP    PgnoFDP  PriExt      Owned  Available

    ===============================================================================

    priv1.edb               Db           1          1   256-m       8960        116

     

     

    Next lets look at the attachments table. You see below two rows, one called 1-23 which is the primary B+tree and then a <Long Values> which contains records or fragments or records that are too large to be stored in the primary table are stored. The value under the owned column for 1-23 (7778) represents the total number of pages owned by this table. This encompasses the long values and any other secondary indexes that could be in use by this table. The next value is the available pages (16) that can be reused by this individual table (but not by indexes or Long Value tree). Of the 7778 pages in use by this table, the long value tree is occupying 7691 of them and has 8 pages available.

     

    ******************************** SPACE DUMP ***********************************

    Name                   Type   ObjidFDP    PgnoFDP  PriExt      Owned  Available

    ===============================================================================

    1-23                    Tbl         61        236     2-m       7778         16

      <Long Values>         LV         222        237     1-m       7691          8

     

     

    Next lets take a peek at a standard folder in use by someone in the database. The folder is 1-33. (Internally we represent tables as numbers.) This would typically represent someone’s INBOX folder or some other folder the user may have created. Here we have a primary entry, 1-33, that is the table itself. Listed under this row are associated Long Value and indexes to this table. As you can see, overall this table occupies 14 pages with 1 page available to the primary table. The Long Values owns 5 of the total 14 pages owned by this table and has 2 free pages while the table entry only has one. The thing to keep in mind is the Owned value represents ALL pages in use by the table, indexes and LV trees and the Available only represents the number of pages available to that individual index/LV/Table and is not cumulative.

     

     

    ******************************** SPACE DUMP ***********************************

    Name                   Type   ObjidFDP    PgnoFDP  PriExt      Owned  Available

    ===============================================================================

    1-33                    Tbl        336       8821     8-m         14          1

      <Long Values>         LV         342       8826     1-m          5          2

      ?T668f-T6654+Q3f88    Idx        354       8827     1-s          1          0

      MsgFolderIndex7       Idx        338       8822     1-s          1          0

      MsgFolderIndexPtagDel Idx        341       8825     1-s          1          0

      MsgFolderIndexURLComp Idx        340       8824     1-s          1          0

      RuleMsgFolderIndex    Idx        339       8823     1-s          1          0

     

     

    At the end of the dump is the a line similar to the following. It contains a summation of the total number of pages that are available throughout all the tables. By taking this value and multiplying it by 4096, you arrive at the true amount of whitespace in the database.

     

    -------------------------------------------------------------------------------

                                                                                253

    So the summation of all the mailboxes do match because the size of the database because while only 100k of information total is stored in a mailbox, the tables that actually store the data could occupy a larger amount of space depending upon the density of the pages at the time and if pages have been freed up to the database root. I am not saying this is the answer to every discrepancy, but in the majority of cases this has proven to be the case.

     

    I hope this was informative and if there is something I need to drill down on further, please let me know in your feedback.

     

  • Large Messages Affect Server Performance

    I recent months we have seen issues where users (knowingly or unknowingly) send messages with LARGE attachments (500+mb.) Unfortunately this has huge impact on the server's performance, typically causing message queues to backup and general client sluggishness.  I wanted to point on some of the things going on behind the scenes and what can proactively done about it and what we are doing about it...

    When a client submits a message the message either lives in memory or is temporarily saved to the Drafts folder depending upon timing. When a user generates a message and attaches a large file to it, the attachment begins streaming to the server. It is only when that process is done and the message is sitting in the drafts folder does the message size count against mailbox storage limits. If user is able to generate a message, attach a large file, and then 'SEND' the message before being completely streamed to the server, the message submission attempt is allowed even if the user current mailbox size + the new message size exceeds the user’s storage limits. If the user is configured to save messages in their Sent Items folder and mailbox size limits are in place, the user will likely realize their error when the attempt to send another message since there mailbox is then over the size limit.

    When a message is submitted, or sent, a property is stamped on the message by the client indicating the size of the message. The Information Store checks the size of the message against the user's individual maximum message size submission limits. This information is cached when the user first logs on to Exchange and fully refreshed every 2 hours. To adjust the lifetime of the various mailbox caching mechanisms, take a look at the following KB article:

            http://support.microsoft.com/default.aspx?scid=kb;en-us;327378

    If the message exceeds the individual limit, the Information Store rejects the submission from the client and the client then receives an error message to the affect “This message exceeds the maximum message size limits for this user“.  However, when no individual limits are imposed, the message is accepted by the Information Store and placed into the Temp Tables while the message stub information is sent to the Categorizer. When the Categorizer examines the message it looks to see if the message size exceeds the Global Maximum Submission Limit, and if so, creates an NDR message and attaches the original, large message, to the NDR. This process in essence generates a new message containing the old message. The NDR is then sent back through the Information Store to the user that originally sent the message.

    Currently there is a setting to prevent the NDR process from attempting to attach such a large message:

            http://support.microsoft.com/default.aspx?scid=kb;en-us;308303

    We are also current working on a Hotfix that changes some behavior during the submission process. With this fix, the Information Store now changes some of the logic of how it maintains limits. As I mentioned above, when a user initially logs on to Exchange, we query information about the user from the Active Directory. If the user has individual message size limits, those limits are cached as part of the user’s logon. If the user does not have individual limits, then we read the Global Maximum Submission Limit value and apply that value to the user’s limits. By making this slight change, we can prevent a large message from being submitted for delivery and clogging the pipes. If in some rare circumstance the Individual Limits are larger than the global limits, the message will be allowed to be ‘Sent’ from the client, but when the message reaches the Categorizer, may still NDR.

     

    More details about this fix are available from the following articles. Note the first article, 830762, is a released fix that starts to address this issue. I minor problem was found after the fix was released that may cause the limits to be reverted when background quotas are refreshed. The final fix correcting that problem should be available in 3 weeks and is referenced by the second article below, which has yet to be released..  You can currently call PSS for the first fix, 830762, however it be likely 3-4 weeks before the final fix (836738) is available.

            http://support.microsoft.com/default.aspx?scid=kb;en-us;830762
            http://support.microsoft.com/default.aspx?scid=kb;en-us;836738

     

     

  • Sherman Set the Way-Back machine to 1981

    What was your first computer or experience with programming..?

    Well for me at the strapping young age of 7, my father brought home a Timex/Sinclair 1000. With a wopping 16k RAM and a 3.25mhz processor I was set on a path that lead me to where I am today. This thing sported a cassettee storage system and monochrome display capable of 64x44 resolution in graphics mode.

    Every day when I got home from school I would just love cracking open the accompaning book of ROM BASIC and Z-80 assembly programs and typing them in, then see what would happen if I change this line of code... or that line of code.

    10 FOR I=1 TO 50
    20 PRINT “HELLO WORLD“;
    30 NEXT I

More Posts « Previous page

© 2009 Microsoft Corporation. All rights reserved. Terms of Use  |  Trademarks  |  Privacy Statement
Microsoft
Page view tracker