Translation components API.

See the Weblate's Web API documentation for detailed description of the API.

GET /api/translations/documentation/articlesvm-design_index/es/changes/?format=api&page=3
HTTP 200 OK
Allow: GET, HEAD, OPTIONS
Content-Type: application/json
Vary: Accept

{
    "count": 163,
    "next": "https://translate-dev.freebsd.org/api/translations/documentation/articlesvm-design_index/es/changes/?format=api&page=4",
    "previous": "https://translate-dev.freebsd.org/api/translations/documentation/articlesvm-design_index/es/changes/?format=api&page=2",
    "results": [
        {
            "unit": null,
            "component": "https://translate-dev.freebsd.org/api/components/documentation/articlesvm-design_index/?format=api",
            "translation": "https://translate-dev.freebsd.org/api/translations/documentation/articlesvm-design_index/es/?format=api",
            "user": null,
            "author": null,
            "timestamp": "2021-11-23T15:31:55.654927Z",
            "action": 0,
            "target": "",
            "id": 347925,
            "action_name": "资源更新",
            "url": "https://translate-dev.freebsd.org/api/changes/347925/?format=api"
        },
        {
            "unit": null,
            "component": "https://translate-dev.freebsd.org/api/components/documentation/articlesvm-design_index/?format=api",
            "translation": "https://translate-dev.freebsd.org/api/translations/documentation/articlesvm-design_index/es/?format=api",
            "user": null,
            "author": null,
            "timestamp": "2022-02-02T14:07:12.193843Z",
            "action": 0,
            "target": "",
            "id": 353993,
            "action_name": "资源更新",
            "url": "https://translate-dev.freebsd.org/api/changes/353993/?format=api"
        },
        {
            "unit": "https://translate-dev.freebsd.org/api/units/1443562/?format=api",
            "component": "https://translate-dev.freebsd.org/api/components/documentation/articlesvm-design_index/?format=api",
            "translation": "https://translate-dev.freebsd.org/api/translations/documentation/articlesvm-design_index/es/?format=api",
            "user": null,
            "author": null,
            "timestamp": "2022-07-08T06:09:39.486191Z",
            "action": 30,
            "target": "You will notice immediately that what was originally a simple file mapping has become much more complex.  Data may be modified on a page-by-page basis whereas the file mapping encompasses many pages at once.  The complexity further increases when a process forks.  When a process forks, the result is two processes-each with their own private address spaces, including any modifications made by the original process prior to the call to `fork()`.  It would be silly for the VM system to make a complete copy of the data at the time of the `fork()` because it is quite possible that at least one of the two processes will only need to read from that page from then on, allowing the original page to continue to be used.  What was a private page is made copy-on-write again, since each process (parent and child) expects their own personal post-fork modifications to remain private to themselves and not affect the other.",
            "id": 374685,
            "action_name": "改变了源字符串",
            "url": "https://translate-dev.freebsd.org/api/changes/374685/?format=api"
        },
        {
            "unit": null,
            "component": "https://translate-dev.freebsd.org/api/components/documentation/articlesvm-design_index/?format=api",
            "translation": "https://translate-dev.freebsd.org/api/translations/documentation/articlesvm-design_index/es/?format=api",
            "user": null,
            "author": null,
            "timestamp": "2022-07-08T06:09:39.676223Z",
            "action": 0,
            "target": "",
            "id": 374686,
            "action_name": "资源更新",
            "url": "https://translate-dev.freebsd.org/api/changes/374686/?format=api"
        },
        {
            "unit": null,
            "component": "https://translate-dev.freebsd.org/api/components/documentation/articlesvm-design_index/?format=api",
            "translation": "https://translate-dev.freebsd.org/api/translations/documentation/articlesvm-design_index/es/?format=api",
            "user": null,
            "author": null,
            "timestamp": "2022-07-08T06:09:49.961100Z",
            "action": 44,
            "target": "",
            "id": 374698,
            "action_name": "要翻译的新字符串",
            "url": "https://translate-dev.freebsd.org/api/changes/374698/?format=api"
        },
        {
            "unit": "https://translate-dev.freebsd.org/api/units/1443562/?format=api",
            "component": "https://translate-dev.freebsd.org/api/components/documentation/articlesvm-design_index/?format=api",
            "translation": "https://translate-dev.freebsd.org/api/translations/documentation/articlesvm-design_index/es/?format=api",
            "user": "https://translate-dev.freebsd.org/api/users/fernape/?format=api",
            "author": "https://translate-dev.freebsd.org/api/users/fernape/?format=api",
            "timestamp": "2022-07-19T08:18:25.583904Z",
            "action": 2,
            "target": "Notarás inmediatamente que lo que originalmente era un simple mapeo de un fichero se ha convertido en algo más complejo. Los datos pueden ser modificados página a página mientras que el mapeo de ficheros engloba varias páginas a la vez. La complejidad aumenta más cuando un proceso se bifurca. Cuando un proceso se bifurca, el resultado son dos procesos—cada uno con su propio espacio de direcciones privado que incluye cualquier modificación hecha por el proceso original antes de la llamada a `fork()`. Sería tonto para el sistema de Memoria Virtual hacer una copia completa de los datos en el momento de llamar a `fork()` porque es bastante posible que al menos uno de los dos procesos solamente necesite leer de esa página a partir de este momento, permitiendo así que se use la página original. Lo que era una página privada se ha convertido en una página copy-on-write de nuevo, puesto que cada proceso (padre y hijo) espera que sus propias modificaciones personales después del fork permanezcan privadas para ellos y que afecten al otro.",
            "id": 375821,
            "action_name": "修改了译文",
            "url": "https://translate-dev.freebsd.org/api/changes/375821/?format=api"
        },
        {
            "unit": "https://translate-dev.freebsd.org/api/units/412801/?format=api",
            "component": "https://translate-dev.freebsd.org/api/components/documentation/articlesvm-design_index/?format=api",
            "translation": "https://translate-dev.freebsd.org/api/translations/documentation/articlesvm-design_index/es/?format=api",
            "user": "https://translate-dev.freebsd.org/api/users/juanda097/?format=api",
            "author": "https://translate-dev.freebsd.org/api/users/juanda097/?format=api",
            "timestamp": "2023-01-26T22:50:44.200502Z",
            "action": 45,
            "target": "",
            "id": 398002,
            "action_name": "新贡献者",
            "url": "https://translate-dev.freebsd.org/api/changes/398002/?format=api"
        },
        {
            "unit": "https://translate-dev.freebsd.org/api/units/412801/?format=api",
            "component": "https://translate-dev.freebsd.org/api/components/documentation/articlesvm-design_index/?format=api",
            "translation": "https://translate-dev.freebsd.org/api/translations/documentation/articlesvm-design_index/es/?format=api",
            "user": "https://translate-dev.freebsd.org/api/users/juanda097/?format=api",
            "author": "https://translate-dev.freebsd.org/api/users/juanda097/?format=api",
            "timestamp": "2023-01-26T22:50:44.202551Z",
            "action": 9,
            "target": "Introduction",
            "id": 398003,
            "action_name": "上传了译文",
            "url": "https://translate-dev.freebsd.org/api/changes/398003/?format=api"
        },
        {
            "unit": "https://translate-dev.freebsd.org/api/units/412801/?format=api",
            "component": "https://translate-dev.freebsd.org/api/components/documentation/articlesvm-design_index/?format=api",
            "translation": "https://translate-dev.freebsd.org/api/translations/documentation/articlesvm-design_index/es/?format=api",
            "user": "https://translate-dev.freebsd.org/api/users/fernape/?format=api",
            "author": "https://translate-dev.freebsd.org/api/users/fernape/?format=api",
            "timestamp": "2023-03-28T15:36:31.322082Z",
            "action": 2,
            "target": "Introducción",
            "id": 445921,
            "action_name": "修改了译文",
            "url": "https://translate-dev.freebsd.org/api/changes/445921/?format=api"
        },
        {
            "unit": "https://translate-dev.freebsd.org/api/units/1569373/?format=api",
            "component": "https://translate-dev.freebsd.org/api/components/documentation/articlesvm-design_index/?format=api",
            "translation": "https://translate-dev.freebsd.org/api/translations/documentation/articlesvm-design_index/es/?format=api",
            "user": null,
            "author": null,
            "timestamp": "2023-05-21T18:04:58.764090Z",
            "action": 30,
            "target": "The most important aspect of performance design is what is known as \"Optimizing the Critical Path\". It is often the case that performance optimizations add a little bloat to the code to make the critical path perform better.",
            "id": 536582,
            "action_name": "改变了源字符串",
            "url": "https://translate-dev.freebsd.org/api/changes/536582/?format=api"
        },
        {
            "unit": "https://translate-dev.freebsd.org/api/units/1569373/?format=api",
            "component": "https://translate-dev.freebsd.org/api/components/documentation/articlesvm-design_index/?format=api",
            "translation": "https://translate-dev.freebsd.org/api/translations/documentation/articlesvm-design_index/es/?format=api",
            "user": null,
            "author": null,
            "timestamp": "2023-05-21T18:04:58.764123Z",
            "action": 59,
            "target": "El aspecto más importante del diseño de rendimiento es lo que se conoce como \"Optimización del Camino Crítico\". Es común que las optimizaciones de rendimiento inflen algo el código con el fin de mejorar el rendimiento del camino crítico.",
            "id": 536583,
            "action_name": "更新了仓库中的字符串",
            "url": "https://translate-dev.freebsd.org/api/changes/536583/?format=api"
        },
        {
            "unit": "https://translate-dev.freebsd.org/api/units/1443562/?format=api",
            "component": "https://translate-dev.freebsd.org/api/components/documentation/articlesvm-design_index/?format=api",
            "translation": "https://translate-dev.freebsd.org/api/translations/documentation/articlesvm-design_index/es/?format=api",
            "user": null,
            "author": null,
            "timestamp": "2023-05-21T18:04:58.764144Z",
            "action": 59,
            "target": "Notarás inmediatamente que lo que originalmente era un simple mapeo de un fichero se ha convertido en algo más complejo. Los datos pueden ser modificados página a página mientras que el mapeo de ficheros engloba varias páginas a la vez. La complejidad aumenta más cuando un proceso se bifurca. Cuando un proceso se bifurca, el resultado son dos procesos—cada uno con su propio espacio de direcciones privado que incluye cualquier modificación hecha por el proceso original antes de la llamada a `fork()`. Sería tonto para el sistema de Memoria Virtual hacer una copia completa de los datos en el momento de llamar a `fork()` porque es bastante posible que al menos uno de los dos procesos solamente necesite leer de esa página a partir de este momento, permitiendo así que se use la página original. Lo que era una página privada se ha convertido en una página copy-on-write de nuevo, puesto que cada proceso (padre y hijo) espera que sus propias modificaciones personales después del fork permanezcan privadas para ellos y que afecten al otro.",
            "id": 536584,
            "action_name": "更新了仓库中的字符串",
            "url": "https://translate-dev.freebsd.org/api/changes/536584/?format=api"
        },
        {
            "unit": "https://translate-dev.freebsd.org/api/units/1569374/?format=api",
            "component": "https://translate-dev.freebsd.org/api/components/documentation/articlesvm-design_index/?format=api",
            "translation": "https://translate-dev.freebsd.org/api/translations/documentation/articlesvm-design_index/es/?format=api",
            "user": null,
            "author": null,
            "timestamp": "2023-05-21T18:04:58.764164Z",
            "action": 30,
            "target": "Also, to keep track of swap space, a \"list of holes\" is kept in kernel memory, and this tends to get severely fragmented as well. Since the \"list of holes\" is a linear list, the swap allocation and freeing performance is a non-optimal O(n)-per-page.",
            "id": 536585,
            "action_name": "改变了源字符串",
            "url": "https://translate-dev.freebsd.org/api/changes/536585/?format=api"
        },
        {
            "unit": "https://translate-dev.freebsd.org/api/units/1569374/?format=api",
            "component": "https://translate-dev.freebsd.org/api/components/documentation/articlesvm-design_index/?format=api",
            "translation": "https://translate-dev.freebsd.org/api/translations/documentation/articlesvm-design_index/es/?format=api",
            "user": null,
            "author": null,
            "timestamp": "2023-05-21T18:04:58.764180Z",
            "action": 59,
            "target": "Además, para llevar la cuenta del espacio de intercambio, una \"lista de huecos\" es mantenida en la memoria del núcleo, y esta tiende a fragmentarse de forma severa también. Puesto que la \"lista de huecos\" es una lista lineal, el rendimiento de asignación y liberación de intercambio es de un orden subóptimo de O(n) por página.",
            "id": 536586,
            "action_name": "更新了仓库中的字符串",
            "url": "https://translate-dev.freebsd.org/api/changes/536586/?format=api"
        },
        {
            "unit": "https://translate-dev.freebsd.org/api/units/1569375/?format=api",
            "component": "https://translate-dev.freebsd.org/api/components/documentation/articlesvm-design_index/?format=api",
            "translation": "https://translate-dev.freebsd.org/api/translations/documentation/articlesvm-design_index/es/?format=api",
            "user": null,
            "author": null,
            "timestamp": "2023-05-21T18:04:58.764198Z",
            "action": 30,
            "target": "The entire radix tree bitmap is also preallocated to avoid having to allocate kernel memory during critical low memory swapping operations. After all, the system tends to swap when it is low on memory so we should avoid allocating kernel memory at such times to avoid potential deadlocks.",
            "id": 536587,
            "action_name": "改变了源字符串",
            "url": "https://translate-dev.freebsd.org/api/changes/536587/?format=api"
        },
        {
            "unit": "https://translate-dev.freebsd.org/api/units/1569375/?format=api",
            "component": "https://translate-dev.freebsd.org/api/components/documentation/articlesvm-design_index/?format=api",
            "translation": "https://translate-dev.freebsd.org/api/translations/documentation/articlesvm-design_index/es/?format=api",
            "user": null,
            "author": null,
            "timestamp": "2023-05-21T18:04:58.764214Z",
            "action": 59,
            "target": "El mapa de bits entero para el árbol radix también se preasigna para evitar tener que asignar memoria del núcleo durante operaciones de intercambio con un nivel crítico de memoria baja. Después de todo, el sistema tiende a utilizar intercambio cuando está bajo en memoria de forma que deberíamos evitar asignar memoria del núcleo en esas situaciones para evitar potenciales bloqueos.",
            "id": 536588,
            "action_name": "更新了仓库中的字符串",
            "url": "https://translate-dev.freebsd.org/api/changes/536588/?format=api"
        },
        {
            "unit": "https://translate-dev.freebsd.org/api/units/1569376/?format=api",
            "component": "https://translate-dev.freebsd.org/api/components/documentation/articlesvm-design_index/?format=api",
            "translation": "https://translate-dev.freebsd.org/api/translations/documentation/articlesvm-design_index/es/?format=api",
            "user": null,
            "author": null,
            "timestamp": "2023-05-21T18:04:58.764231Z",
            "action": 30,
            "target": "I did not take the final step of having an \"allocating hint pointer\" that would trundle through a portion of swap as allocations were made to further guarantee contiguous allocations or at least locality of reference, but I ensured that such an addition could be made.",
            "id": 536589,
            "action_name": "改变了源字符串",
            "url": "https://translate-dev.freebsd.org/api/changes/536589/?format=api"
        },
        {
            "unit": "https://translate-dev.freebsd.org/api/units/1569376/?format=api",
            "component": "https://translate-dev.freebsd.org/api/components/documentation/articlesvm-design_index/?format=api",
            "translation": "https://translate-dev.freebsd.org/api/translations/documentation/articlesvm-design_index/es/?format=api",
            "user": null,
            "author": null,
            "timestamp": "2023-05-21T18:04:58.764246Z",
            "action": 59,
            "target": "No realicé el paso final de tener un \"puntero de anotaciones para las asignaciones\" que recorrería una porción del espacio de intercambio según se hicieran las asignaciones para así garantizar asignaciones contiguas o al menos localidad de referencia, pero aseguré que esa condición no podría darse.",
            "id": 536590,
            "action_name": "更新了仓库中的字符串",
            "url": "https://translate-dev.freebsd.org/api/changes/536590/?format=api"
        },
        {
            "unit": "https://translate-dev.freebsd.org/api/units/1569377/?format=api",
            "component": "https://translate-dev.freebsd.org/api/components/documentation/articlesvm-design_index/?format=api",
            "translation": "https://translate-dev.freebsd.org/api/translations/documentation/articlesvm-design_index/es/?format=api",
            "user": null,
            "author": null,
            "timestamp": "2023-05-21T18:04:58.764263Z",
            "action": 30,
            "target": "How much overhead are we willing to suffer in the critical path to avoid freeing the wrong page? Each wrong choice we make will cost us hundreds of thousands of CPU cycles and a noticeable stall of the affected processes, so we are willing to endure a significant amount of overhead to be sure that the right page is chosen.  This is why FreeBSD tends to outperform other systems when memory resources become stressed.",
            "id": 536591,
            "action_name": "改变了源字符串",
            "url": "https://translate-dev.freebsd.org/api/changes/536591/?format=api"
        },
        {
            "unit": "https://translate-dev.freebsd.org/api/units/1569377/?format=api",
            "component": "https://translate-dev.freebsd.org/api/components/documentation/articlesvm-design_index/?format=api",
            "translation": "https://translate-dev.freebsd.org/api/translations/documentation/articlesvm-design_index/es/?format=api",
            "user": null,
            "author": null,
            "timestamp": "2023-05-21T18:04:58.764279Z",
            "action": 59,
            "target": "¿Cuánto trabajo extra estamos dispuestos a sufrir en el camino crítico para evitar liberar la página equivocada? Cada decisión errónea que hacemos costará cientos de miles de ciclos de CPU y una parada notable de los procesos afectados, así que estamos dispuestos a soportar una cantidad significativa de trabajo extra para estar seguros que se escoge la página adecuada. Por esto es por lo que FreeBSD tiende a superar en rendimiento a otros sistemas cuando se estresan los recursos de memoria.",
            "id": 536592,
            "action_name": "更新了仓库中的字符串",
            "url": "https://translate-dev.freebsd.org/api/changes/536592/?format=api"
        },
        {
            "unit": "https://translate-dev.freebsd.org/api/units/1569378/?format=api",
            "component": "https://translate-dev.freebsd.org/api/components/documentation/articlesvm-design_index/?format=api",
            "translation": "https://translate-dev.freebsd.org/api/translations/documentation/articlesvm-design_index/es/?format=api",
            "user": null,
            "author": null,
            "timestamp": "2023-05-21T18:04:58.764296Z",
            "action": 30,
            "target": "An urban myth has circulated for years that Linux did a better job avoiding swapouts than FreeBSD, but this in fact is not true.  What was actually occurring was that FreeBSD was proactively paging out unused pages to make room for more disk cache while Linux was keeping unused pages in core and leaving less memory available for cache and process pages.  I do not know whether this is still true today.",
            "id": 536593,
            "action_name": "改变了源字符串",
            "url": "https://translate-dev.freebsd.org/api/changes/536593/?format=api"
        },
        {
            "unit": "https://translate-dev.freebsd.org/api/units/1569378/?format=api",
            "component": "https://translate-dev.freebsd.org/api/components/documentation/articlesvm-design_index/?format=api",
            "translation": "https://translate-dev.freebsd.org/api/translations/documentation/articlesvm-design_index/es/?format=api",
            "user": null,
            "author": null,
            "timestamp": "2023-05-21T18:04:58.764312Z",
            "action": 59,
            "target": "Durante años ha circulado una leyenda urbana acerca de que Linux hacía un mejor trabajo que FreeBSD evitando escribir en intercambio, pero de hecho esto no es cierto. Lo que ocurría en realidad era que FreeBSD estaba llevando a intercambio de forma proactiva páginas no utilizadas para hacer sitio para más caché de disco mientras que Linux estaba manteniendo las páginas sin utilizar y dejando menos memoria disponible para la caché y para páginas de procesos. No sé si esto sigue siendo cierto a día de hoy.",
            "id": 536594,
            "action_name": "更新了仓库中的字符串",
            "url": "https://translate-dev.freebsd.org/api/changes/536594/?format=api"
        },
        {
            "unit": "https://translate-dev.freebsd.org/api/units/1569379/?format=api",
            "component": "https://translate-dev.freebsd.org/api/components/documentation/articlesvm-design_index/?format=api",
            "translation": "https://translate-dev.freebsd.org/api/translations/documentation/articlesvm-design_index/es/?format=api",
            "user": null,
            "author": null,
            "timestamp": "2023-05-21T18:04:58.764329Z",
            "action": 30,
            "target": "A large percentage of page faults that occur are zero-fill faults.  You can usually see this by observing the `vmstat -s` output.  These occur when a process accesses pages in its BSS area.  The BSS area is expected to be initially zero but the VM system does not bother to allocate any memory at all until the process actually accesses it.  When a fault occurs the VM system must not only allocate a new page, it must zero it as well.  To optimize the zeroing operation the VM system has the ability to pre-zero pages and mark them as such, and to request pre-zeroed pages when zero-fill faults occur.  The pre-zeroing occurs whenever the CPU is idle but the number of pages the system pre-zeros is limited to avoid blowing away the memory caches.  This is an excellent example of adding complexity to the VM system to optimize the critical path.",
            "id": 536595,
            "action_name": "改变了源字符串",
            "url": "https://translate-dev.freebsd.org/api/changes/536595/?format=api"
        },
        {
            "unit": "https://translate-dev.freebsd.org/api/units/1569379/?format=api",
            "component": "https://translate-dev.freebsd.org/api/components/documentation/articlesvm-design_index/?format=api",
            "translation": "https://translate-dev.freebsd.org/api/translations/documentation/articlesvm-design_index/es/?format=api",
            "user": null,
            "author": null,
            "timestamp": "2023-05-21T18:04:58.764345Z",
            "action": 59,
            "target": "Un gran porcentaje de los fallos de página que se producen son fallos de rellenado de ceros. Habitualmente puedes verlo observando la salida del comando `vmstat -s`. Esto ocurre cuando un proceso accede a páginas de su área de BSS. Se espera que el área de BSS esté inicializada a cero pero el sistema de Memoria Virtual no se molesta en asignar ninguna memoria en absoluto hasta el momento en el que el proceso accede de verdad. Cuando se produce un fallo el sistema de Memoria Virtual no solo debe asignar una nueva página, tiene que inicializarla a cero también. Para optimizar la operación de rellenado de ceros el sistema de Memoria Virtual tiene la capacidad de pre-inicializar páginas a cero y marcarlas como tal, y solicitar páginas pre-inicializadas a cero cuando ocurre un fallo de rellenado de ceros. La pre-inicialización a cero ocurren cuando la CPU está ociosa pero el número de páginas que el sistema pre-inicializa a cero está limitado para evitar destrozar las cachés de memoria. Este es un ejemplo excelente de cómo añadir complejidad al sistema de Memoria Virtual para optimizar el camino crítico.",
            "id": 536596,
            "action_name": "更新了仓库中的字符串",
            "url": "https://translate-dev.freebsd.org/api/changes/536596/?format=api"
        },
        {
            "unit": "https://translate-dev.freebsd.org/api/units/1569380/?format=api",
            "component": "https://translate-dev.freebsd.org/api/components/documentation/articlesvm-design_index/?format=api",
            "translation": "https://translate-dev.freebsd.org/api/translations/documentation/articlesvm-design_index/es/?format=api",
            "user": null,
            "author": null,
            "timestamp": "2023-05-21T18:04:58.764363Z",
            "action": 30,
            "target": "`pv_entry` structures only represent pages mapped by the MMU (one `pv_entry` represents one pte).  This means that when we need to remove all hardware references to a `vm_page` (to reuse the page for something else, page it out, clear it, dirty it, and so forth) we can simply scan the linked list of pv_entry's associated with that vm_page to remove or modify the pte's from their page tables.",
            "id": 536597,
            "action_name": "改变了源字符串",
            "url": "https://translate-dev.freebsd.org/api/changes/536597/?format=api"
        },
        {
            "unit": "https://translate-dev.freebsd.org/api/units/1569380/?format=api",
            "component": "https://translate-dev.freebsd.org/api/components/documentation/articlesvm-design_index/?format=api",
            "translation": "https://translate-dev.freebsd.org/api/translations/documentation/articlesvm-design_index/es/?format=api",
            "user": null,
            "author": null,
            "timestamp": "2023-05-21T18:04:58.764379Z",
            "action": 59,
            "target": "Las estructuras `pv_entry` sólo representan páginas mapeadas por la MMU (una `pv_entry` representa una pte). Esto significa que cuando necesitamos eliminar todas las referencias hardware a la `vm_page` (para reutilizar la página para otra cosa, pasarla a disco, borrarla, marcarla como sucia y demás) podemos simplemente escanear la lista enlazada de estructuras `pv_entry` asociadas con esa `vm_page` y eliminar o modificar la pte de sus tablas de páginas.",
            "id": 536598,
            "action_name": "更新了仓库中的字符串",
            "url": "https://translate-dev.freebsd.org/api/changes/536598/?format=api"
        },
        {
            "unit": "https://translate-dev.freebsd.org/api/units/1569381/?format=api",
            "component": "https://translate-dev.freebsd.org/api/components/documentation/articlesvm-design_index/?format=api",
            "translation": "https://translate-dev.freebsd.org/api/translations/documentation/articlesvm-design_index/es/?format=api",
            "user": null,
            "author": null,
            "timestamp": "2023-05-21T18:04:58.764397Z",
            "action": 30,
            "target": "Under Linux there is no such linked list.  To remove all the hardware page table mappings for a `vm_page` linux must index into every VM object that _might_ have mapped the page.  For example, if you have 50 processes all mapping the same shared library and want to get rid of page X in that library, you need to index into the page table for each of those 50 processes even if only 10 of them have actually mapped the page.  So Linux is trading off the simplicity of its design against performance.  Many VM algorithms which are O(1) or (small N) under FreeBSD wind up being O(N), O(N^2), or worse under Linux.  Since the pte's representing a particular page in an object tend to be at the same offset in all the page tables they are mapped in, reducing the number of accesses into the page tables at the same pte offset will often avoid blowing away the L1 cache line for that offset, which can lead to better performance.",
            "id": 536599,
            "action_name": "改变了源字符串",
            "url": "https://translate-dev.freebsd.org/api/changes/536599/?format=api"
        },
        {
            "unit": "https://translate-dev.freebsd.org/api/units/1569381/?format=api",
            "component": "https://translate-dev.freebsd.org/api/components/documentation/articlesvm-design_index/?format=api",
            "translation": "https://translate-dev.freebsd.org/api/translations/documentation/articlesvm-design_index/es/?format=api",
            "user": null,
            "author": null,
            "timestamp": "2023-05-21T18:04:58.764413Z",
            "action": 59,
            "target": "En Linux no existe dicha lista enlazada. Para eliminar todos los mapeos de tablas de páginas hardware para una `vm_page` linux debe acceder a cada objeto de Memoria Virtual que _podría_ haber mapeado la página. Por ejemplo, si tienes 50 procesos todos mapeando la misma biblioteca compartida y quieres eliminar la página X de esa biblioteca, necesitas acceder a la tabla de páginas de cada uno de esos 50 procesos incluso si sólo 10 de ellos han mapeado la página. Así que Linux está favoreciendo la simplicidad en el diseño por el rendimiento. Muchos algoritmos de Memoria Virtual que son O(1) o (una N pequeña) en FreeBSD terminan siendo O(N), O(N^2), o peor en Linux. Puesto que los pte que representan una página concreta en un objeto suelen estar en el mismo desplazamiento en todas las tablas de páginas en las que están mapeadas, reducir el número de accesos a las tablas de páginas en el mismo desplazamiento del pte evitará por lo general que se destruya la línea de caché L1 para ese desplazamiento, lo que puede conllevar un mejor rendimiento.",
            "id": 536600,
            "action_name": "更新了仓库中的字符串",
            "url": "https://translate-dev.freebsd.org/api/changes/536600/?format=api"
        },
        {
            "unit": "https://translate-dev.freebsd.org/api/units/1569382/?format=api",
            "component": "https://translate-dev.freebsd.org/api/components/documentation/articlesvm-design_index/?format=api",
            "translation": "https://translate-dev.freebsd.org/api/translations/documentation/articlesvm-design_index/es/?format=api",
            "user": null,
            "author": null,
            "timestamp": "2023-05-21T18:04:58.764432Z",
            "action": 30,
            "target": "FreeBSD has added complexity (the `pv_entry` scheme) to increase performance (to limit page table accesses to _only_ those pte's that need to be modified).",
            "id": 536601,
            "action_name": "改变了源字符串",
            "url": "https://translate-dev.freebsd.org/api/changes/536601/?format=api"
        },
        {
            "unit": "https://translate-dev.freebsd.org/api/units/1569382/?format=api",
            "component": "https://translate-dev.freebsd.org/api/components/documentation/articlesvm-design_index/?format=api",
            "translation": "https://translate-dev.freebsd.org/api/translations/documentation/articlesvm-design_index/es/?format=api",
            "user": null,
            "author": null,
            "timestamp": "2023-05-21T18:04:58.764448Z",
            "action": 59,
            "target": "FreeBSD tiene más complejidad (el esquema de `pv_entry`) para mejorar el rendimiento (para limitar los accesos a la tabla de páginas _sólo_ a aquellos pte que necesitan ser modificados).",
            "id": 536602,
            "action_name": "更新了仓库中的字符串",
            "url": "https://translate-dev.freebsd.org/api/changes/536602/?format=api"
        },
        {
            "unit": null,
            "component": "https://translate-dev.freebsd.org/api/components/documentation/articlesvm-design_index/?format=api",
            "translation": "https://translate-dev.freebsd.org/api/translations/documentation/articlesvm-design_index/es/?format=api",
            "user": null,
            "author": null,
            "timestamp": "2023-05-21T18:04:58.764464Z",
            "action": 0,
            "target": "",
            "id": 536603,
            "action_name": "资源更新",
            "url": "https://translate-dev.freebsd.org/api/changes/536603/?format=api"
        },
        {
            "unit": null,
            "component": "https://translate-dev.freebsd.org/api/components/documentation/articlesvm-design_index/?format=api",
            "translation": "https://translate-dev.freebsd.org/api/translations/documentation/articlesvm-design_index/es/?format=api",
            "user": null,
            "author": null,
            "timestamp": "2023-05-21T18:04:59.826110Z",
            "action": 44,
            "target": "",
            "id": 536738,
            "action_name": "要翻译的新字符串",
            "url": "https://translate-dev.freebsd.org/api/changes/536738/?format=api"
        },
        {
            "unit": "https://translate-dev.freebsd.org/api/units/1569373/?format=api",
            "component": "https://translate-dev.freebsd.org/api/components/documentation/articlesvm-design_index/?format=api",
            "translation": "https://translate-dev.freebsd.org/api/translations/documentation/articlesvm-design_index/es/?format=api",
            "user": "https://translate-dev.freebsd.org/api/users/fernape/?format=api",
            "author": "https://translate-dev.freebsd.org/api/users/fernape/?format=api",
            "timestamp": "2023-07-18T12:48:48.959361Z",
            "action": 2,
            "target": "El aspecto más importante del diseño de rendimiento es lo que se conoce como \"Optimización del Camino Crítico\". Es común que las optimizaciones de rendimiento inflen algo el código con el fin de mejorar el rendimiento del camino crítico.",
            "id": 561958,
            "action_name": "修改了译文",
            "url": "https://translate-dev.freebsd.org/api/changes/561958/?format=api"
        },
        {
            "unit": "https://translate-dev.freebsd.org/api/units/1569374/?format=api",
            "component": "https://translate-dev.freebsd.org/api/components/documentation/articlesvm-design_index/?format=api",
            "translation": "https://translate-dev.freebsd.org/api/translations/documentation/articlesvm-design_index/es/?format=api",
            "user": "https://translate-dev.freebsd.org/api/users/fernape/?format=api",
            "author": "https://translate-dev.freebsd.org/api/users/fernape/?format=api",
            "timestamp": "2023-07-18T12:48:51.424398Z",
            "action": 2,
            "target": "Además, para llevar la cuenta del espacio de intercambio, una \"lista de huecos\" es mantenida en la memoria del núcleo, y esta tiende a fragmentarse de forma severa también. Puesto que la \"lista de huecos\" es una lista lineal, el rendimiento de asignación y liberación de intercambio es de un orden subóptimo de O(n) por página.",
            "id": 561959,
            "action_name": "修改了译文",
            "url": "https://translate-dev.freebsd.org/api/changes/561959/?format=api"
        },
        {
            "unit": "https://translate-dev.freebsd.org/api/units/1569375/?format=api",
            "component": "https://translate-dev.freebsd.org/api/components/documentation/articlesvm-design_index/?format=api",
            "translation": "https://translate-dev.freebsd.org/api/translations/documentation/articlesvm-design_index/es/?format=api",
            "user": "https://translate-dev.freebsd.org/api/users/fernape/?format=api",
            "author": "https://translate-dev.freebsd.org/api/users/fernape/?format=api",
            "timestamp": "2023-07-18T12:48:53.623409Z",
            "action": 2,
            "target": "El mapa de bits entero para el árbol radix también se preasigna para evitar tener que asignar memoria del núcleo durante operaciones de intercambio con un nivel crítico de memoria baja. Después de todo, el sistema tiende a utilizar intercambio cuando está bajo en memoria de forma que deberíamos evitar asignar memoria del núcleo en esas situaciones para evitar potenciales bloqueos.",
            "id": 561960,
            "action_name": "修改了译文",
            "url": "https://translate-dev.freebsd.org/api/changes/561960/?format=api"
        },
        {
            "unit": "https://translate-dev.freebsd.org/api/units/1569376/?format=api",
            "component": "https://translate-dev.freebsd.org/api/components/documentation/articlesvm-design_index/?format=api",
            "translation": "https://translate-dev.freebsd.org/api/translations/documentation/articlesvm-design_index/es/?format=api",
            "user": "https://translate-dev.freebsd.org/api/users/fernape/?format=api",
            "author": "https://translate-dev.freebsd.org/api/users/fernape/?format=api",
            "timestamp": "2023-07-18T12:48:56.212865Z",
            "action": 2,
            "target": "No realicé el paso final de tener un \"puntero de anotaciones para las asignaciones\" que recorrería una porción del espacio de intercambio según se hicieran las asignaciones para así garantizar asignaciones contiguas o al menos localidad de referencia, pero aseguré que esa condición no podría darse.",
            "id": 561961,
            "action_name": "修改了译文",
            "url": "https://translate-dev.freebsd.org/api/changes/561961/?format=api"
        },
        {
            "unit": "https://translate-dev.freebsd.org/api/units/1569377/?format=api",
            "component": "https://translate-dev.freebsd.org/api/components/documentation/articlesvm-design_index/?format=api",
            "translation": "https://translate-dev.freebsd.org/api/translations/documentation/articlesvm-design_index/es/?format=api",
            "user": "https://translate-dev.freebsd.org/api/users/fernape/?format=api",
            "author": "https://translate-dev.freebsd.org/api/users/fernape/?format=api",
            "timestamp": "2023-07-18T12:48:58.708866Z",
            "action": 2,
            "target": "¿Cuánto trabajo extra estamos dispuestos a sufrir en el camino crítico para evitar liberar la página equivocada? Cada decisión errónea que hacemos costará cientos de miles de ciclos de CPU y una parada notable de los procesos afectados, así que estamos dispuestos a soportar una cantidad significativa de trabajo extra para estar seguros que se escoge la página adecuada. Por esto es por lo que FreeBSD tiende a superar en rendimiento a otros sistemas cuando se estresan los recursos de memoria.",
            "id": 561962,
            "action_name": "修改了译文",
            "url": "https://translate-dev.freebsd.org/api/changes/561962/?format=api"
        },
        {
            "unit": "https://translate-dev.freebsd.org/api/units/1569378/?format=api",
            "component": "https://translate-dev.freebsd.org/api/components/documentation/articlesvm-design_index/?format=api",
            "translation": "https://translate-dev.freebsd.org/api/translations/documentation/articlesvm-design_index/es/?format=api",
            "user": "https://translate-dev.freebsd.org/api/users/fernape/?format=api",
            "author": "https://translate-dev.freebsd.org/api/users/fernape/?format=api",
            "timestamp": "2023-07-18T12:49:00.794621Z",
            "action": 2,
            "target": "Durante años ha circulado una leyenda urbana acerca de que Linux hacía un mejor trabajo que FreeBSD evitando escribir en intercambio, pero de hecho esto no es cierto. Lo que ocurría en realidad era que FreeBSD estaba llevando a intercambio de forma proactiva páginas no utilizadas para hacer sitio para más caché de disco mientras que Linux estaba manteniendo las páginas sin utilizar y dejando menos memoria disponible para la caché y para páginas de procesos. No sé si esto sigue siendo cierto a día de hoy.",
            "id": 561963,
            "action_name": "修改了译文",
            "url": "https://translate-dev.freebsd.org/api/changes/561963/?format=api"
        },
        {
            "unit": "https://translate-dev.freebsd.org/api/units/1569379/?format=api",
            "component": "https://translate-dev.freebsd.org/api/components/documentation/articlesvm-design_index/?format=api",
            "translation": "https://translate-dev.freebsd.org/api/translations/documentation/articlesvm-design_index/es/?format=api",
            "user": "https://translate-dev.freebsd.org/api/users/fernape/?format=api",
            "author": "https://translate-dev.freebsd.org/api/users/fernape/?format=api",
            "timestamp": "2023-07-18T12:49:04.168783Z",
            "action": 2,
            "target": "Un gran porcentaje de los fallos de página que se producen son fallos de rellenado de ceros. Habitualmente puedes verlo observando la salida del comando `vmstat -s`. Esto ocurre cuando un proceso accede a páginas de su área de BSS. Se espera que el área de BSS esté inicializada a cero pero el sistema de Memoria Virtual no se molesta en asignar ninguna memoria en absoluto hasta el momento en el que el proceso accede de verdad. Cuando se produce un fallo el sistema de Memoria Virtual no solo debe asignar una nueva página, tiene que inicializarla a cero también. Para optimizar la operación de rellenado de ceros el sistema de Memoria Virtual tiene la capacidad de pre-inicializar páginas a cero y marcarlas como tal, y solicitar páginas pre-inicializadas a cero cuando ocurre un fallo de rellenado de ceros. La pre-inicialización a cero ocurren cuando la CPU está ociosa pero el número de páginas que el sistema pre-inicializa a cero está limitado para evitar destrozar las cachés de memoria. Este es un ejemplo excelente de cómo añadir complejidad al sistema de Memoria Virtual para optimizar el camino crítico.",
            "id": 561964,
            "action_name": "修改了译文",
            "url": "https://translate-dev.freebsd.org/api/changes/561964/?format=api"
        },
        {
            "unit": "https://translate-dev.freebsd.org/api/units/1569380/?format=api",
            "component": "https://translate-dev.freebsd.org/api/components/documentation/articlesvm-design_index/?format=api",
            "translation": "https://translate-dev.freebsd.org/api/translations/documentation/articlesvm-design_index/es/?format=api",
            "user": "https://translate-dev.freebsd.org/api/users/fernape/?format=api",
            "author": "https://translate-dev.freebsd.org/api/users/fernape/?format=api",
            "timestamp": "2023-07-18T12:49:06.410380Z",
            "action": 2,
            "target": "Las estructuras `pv_entry` sólo representan páginas mapeadas por la MMU (una `pv_entry` representa una pte). Esto significa que cuando necesitamos eliminar todas las referencias hardware a la `vm_page` (para reutilizar la página para otra cosa, pasarla a disco, borrarla, marcarla como sucia y demás) podemos simplemente escanear la lista enlazada de estructuras `pv_entry` asociadas con esa `vm_page` y eliminar o modificar la pte de sus tablas de páginas.",
            "id": 561965,
            "action_name": "修改了译文",
            "url": "https://translate-dev.freebsd.org/api/changes/561965/?format=api"
        },
        {
            "unit": "https://translate-dev.freebsd.org/api/units/1569381/?format=api",
            "component": "https://translate-dev.freebsd.org/api/components/documentation/articlesvm-design_index/?format=api",
            "translation": "https://translate-dev.freebsd.org/api/translations/documentation/articlesvm-design_index/es/?format=api",
            "user": "https://translate-dev.freebsd.org/api/users/fernape/?format=api",
            "author": "https://translate-dev.freebsd.org/api/users/fernape/?format=api",
            "timestamp": "2023-07-18T12:49:09.552382Z",
            "action": 2,
            "target": "En Linux no existe dicha lista enlazada. Para eliminar todos los mapeos de tablas de páginas hardware para una `vm_page` linux debe acceder a cada objeto de Memoria Virtual que _podría_ haber mapeado la página. Por ejemplo, si tienes 50 procesos todos mapeando la misma biblioteca compartida y quieres eliminar la página X de esa biblioteca, necesitas acceder a la tabla de páginas de cada uno de esos 50 procesos incluso si sólo 10 de ellos han mapeado la página. Así que Linux está favoreciendo la simplicidad en el diseño por el rendimiento. Muchos algoritmos de Memoria Virtual que son O(1) o (una N pequeña) en FreeBSD terminan siendo O(N), O(N^2), o peor en Linux. Puesto que los pte que representan una página concreta en un objeto suelen estar en el mismo desplazamiento en todas las tablas de páginas en las que están mapeadas, reducir el número de accesos a las tablas de páginas en el mismo desplazamiento del pte evitará por lo general que se destruya la línea de caché L1 para ese desplazamiento, lo que puede conllevar un mejor rendimiento.",
            "id": 561966,
            "action_name": "修改了译文",
            "url": "https://translate-dev.freebsd.org/api/changes/561966/?format=api"
        },
        {
            "unit": "https://translate-dev.freebsd.org/api/units/1569382/?format=api",
            "component": "https://translate-dev.freebsd.org/api/components/documentation/articlesvm-design_index/?format=api",
            "translation": "https://translate-dev.freebsd.org/api/translations/documentation/articlesvm-design_index/es/?format=api",
            "user": "https://translate-dev.freebsd.org/api/users/fernape/?format=api",
            "author": "https://translate-dev.freebsd.org/api/users/fernape/?format=api",
            "timestamp": "2023-07-18T12:49:11.893126Z",
            "action": 2,
            "target": "FreeBSD tiene más complejidad (el esquema de `pv_entry`) para mejorar el rendimiento (para limitar los accesos a la tabla de páginas _sólo_ a aquellos pte que necesitan ser modificados).",
            "id": 561967,
            "action_name": "修改了译文",
            "url": "https://translate-dev.freebsd.org/api/changes/561967/?format=api"
        },
        {
            "unit": null,
            "component": "https://translate-dev.freebsd.org/api/components/documentation/articlesvm-design_index/?format=api",
            "translation": "https://translate-dev.freebsd.org/api/translations/documentation/articlesvm-design_index/es/?format=api",
            "user": null,
            "author": null,
            "timestamp": "2023-07-18T12:50:58.206423Z",
            "action": 17,
            "target": "",
            "id": 561979,
            "action_name": "提交了更改",
            "url": "https://translate-dev.freebsd.org/api/changes/561979/?format=api"
        },
        {
            "unit": "https://translate-dev.freebsd.org/api/units/1598416/?format=api",
            "component": "https://translate-dev.freebsd.org/api/components/documentation/articlesvm-design_index/?format=api",
            "translation": "https://translate-dev.freebsd.org/api/translations/documentation/articlesvm-design_index/es/?format=api",
            "user": null,
            "author": null,
            "timestamp": "2023-09-09T21:51:23.905360Z",
            "action": 59,
            "target": "",
            "id": 576956,
            "action_name": "更新了仓库中的字符串",
            "url": "https://translate-dev.freebsd.org/api/changes/576956/?format=api"
        },
        {
            "unit": "https://translate-dev.freebsd.org/api/units/1569373/?format=api",
            "component": "https://translate-dev.freebsd.org/api/components/documentation/articlesvm-design_index/?format=api",
            "translation": "https://translate-dev.freebsd.org/api/translations/documentation/articlesvm-design_index/es/?format=api",
            "user": null,
            "author": null,
            "timestamp": "2023-09-09T21:51:23.905388Z",
            "action": 59,
            "target": "El aspecto más importante del diseño de rendimiento es lo que se conoce como \"Optimización del Camino Crítico\". Es común que las optimizaciones de rendimiento inflen algo el código con el fin de mejorar el rendimiento del camino crítico.",
            "id": 576957,
            "action_name": "更新了仓库中的字符串",
            "url": "https://translate-dev.freebsd.org/api/changes/576957/?format=api"
        },
        {
            "unit": "https://translate-dev.freebsd.org/api/units/1569374/?format=api",
            "component": "https://translate-dev.freebsd.org/api/components/documentation/articlesvm-design_index/?format=api",
            "translation": "https://translate-dev.freebsd.org/api/translations/documentation/articlesvm-design_index/es/?format=api",
            "user": null,
            "author": null,
            "timestamp": "2023-09-09T21:51:23.905408Z",
            "action": 59,
            "target": "Además, para llevar la cuenta del espacio de intercambio, una \"lista de huecos\" es mantenida en la memoria del núcleo, y esta tiende a fragmentarse de forma severa también. Puesto que la \"lista de huecos\" es una lista lineal, el rendimiento de asignación y liberación de intercambio es de un orden subóptimo de O(n) por página.",
            "id": 576958,
            "action_name": "更新了仓库中的字符串",
            "url": "https://translate-dev.freebsd.org/api/changes/576958/?format=api"
        },
        {
            "unit": "https://translate-dev.freebsd.org/api/units/1569375/?format=api",
            "component": "https://translate-dev.freebsd.org/api/components/documentation/articlesvm-design_index/?format=api",
            "translation": "https://translate-dev.freebsd.org/api/translations/documentation/articlesvm-design_index/es/?format=api",
            "user": null,
            "author": null,
            "timestamp": "2023-09-09T21:51:23.905426Z",
            "action": 59,
            "target": "El mapa de bits entero para el árbol radix también se preasigna para evitar tener que asignar memoria del núcleo durante operaciones de intercambio con un nivel crítico de memoria baja. Después de todo, el sistema tiende a utilizar intercambio cuando está bajo en memoria de forma que deberíamos evitar asignar memoria del núcleo en esas situaciones para evitar potenciales bloqueos.",
            "id": 576959,
            "action_name": "更新了仓库中的字符串",
            "url": "https://translate-dev.freebsd.org/api/changes/576959/?format=api"
        },
        {
            "unit": "https://translate-dev.freebsd.org/api/units/1569376/?format=api",
            "component": "https://translate-dev.freebsd.org/api/components/documentation/articlesvm-design_index/?format=api",
            "translation": "https://translate-dev.freebsd.org/api/translations/documentation/articlesvm-design_index/es/?format=api",
            "user": null,
            "author": null,
            "timestamp": "2023-09-09T21:51:23.905443Z",
            "action": 59,
            "target": "No realicé el paso final de tener un \"puntero de anotaciones para las asignaciones\" que recorrería una porción del espacio de intercambio según se hicieran las asignaciones para así garantizar asignaciones contiguas o al menos localidad de referencia, pero aseguré que esa condición no podría darse.",
            "id": 576960,
            "action_name": "更新了仓库中的字符串",
            "url": "https://translate-dev.freebsd.org/api/changes/576960/?format=api"
        },
        {
            "unit": "https://translate-dev.freebsd.org/api/units/1569377/?format=api",
            "component": "https://translate-dev.freebsd.org/api/components/documentation/articlesvm-design_index/?format=api",
            "translation": "https://translate-dev.freebsd.org/api/translations/documentation/articlesvm-design_index/es/?format=api",
            "user": null,
            "author": null,
            "timestamp": "2023-09-09T21:51:23.905461Z",
            "action": 59,
            "target": "¿Cuánto trabajo extra estamos dispuestos a sufrir en el camino crítico para evitar liberar la página equivocada? Cada decisión errónea que hacemos costará cientos de miles de ciclos de CPU y una parada notable de los procesos afectados, así que estamos dispuestos a soportar una cantidad significativa de trabajo extra para estar seguros que se escoge la página adecuada. Por esto es por lo que FreeBSD tiende a superar en rendimiento a otros sistemas cuando se estresan los recursos de memoria.",
            "id": 576961,
            "action_name": "更新了仓库中的字符串",
            "url": "https://translate-dev.freebsd.org/api/changes/576961/?format=api"
        },
        {
            "unit": "https://translate-dev.freebsd.org/api/units/1569378/?format=api",
            "component": "https://translate-dev.freebsd.org/api/components/documentation/articlesvm-design_index/?format=api",
            "translation": "https://translate-dev.freebsd.org/api/translations/documentation/articlesvm-design_index/es/?format=api",
            "user": null,
            "author": null,
            "timestamp": "2023-09-09T21:51:23.905478Z",
            "action": 59,
            "target": "Durante años ha circulado una leyenda urbana acerca de que Linux hacía un mejor trabajo que FreeBSD evitando escribir en intercambio, pero de hecho esto no es cierto. Lo que ocurría en realidad era que FreeBSD estaba llevando a intercambio de forma proactiva páginas no utilizadas para hacer sitio para más caché de disco mientras que Linux estaba manteniendo las páginas sin utilizar y dejando menos memoria disponible para la caché y para páginas de procesos. No sé si esto sigue siendo cierto a día de hoy.",
            "id": 576962,
            "action_name": "更新了仓库中的字符串",
            "url": "https://translate-dev.freebsd.org/api/changes/576962/?format=api"
        }
    ]
}